diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..65b019d --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,4 @@ +# Reformat with black +d860708ec92cfa041f7a89e17c4dd03d17a94071 +# Reformat with isort +70f88ed37d33cccd46a167ba81f2c953936d75d7 diff --git a/.gitignore b/.gitignore index 4fb3e92..3722934 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /target/ __pycache__/ _build/ +src/euscan/_version.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..ae28019 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,36 @@ +image: python:latest + +variables: + PIP_CACHE_DIR: ${CI_PROJECT_DIR}/.cache/pip + +cache: + paths: + - ${PIP_CACHE_DIR} + +before_script: + - python --version ; pip --version + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + +pre-commit: + variables: + PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit + cache: + paths: + - ${PRE_COMMIT_HOME} + script: + - pip install pre-commit + - pre-commit run --all-files + +publish: + variables: + TWINE_PASSWORD: ${CI_JOB_TOKEN} + TWINE_USERNAME: gitlab-ci-token + TWINE_REPOSITORY_URL: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi + TWINE_NON_INTERACTIVE: 1 + when: manual # gentoolkit as a dependency blocks publishing for now + script: + - pip install build twine + - python -m build + - python -m twine upload --verbose dist/* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..5abc610 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,15 @@ +repos: + - repo: https://github.com/psf/black + rev: 23.11.0 + hooks: + - id: black + + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.1.4 + hooks: + - id: ruff diff --git a/AUTHORS b/AUTHORS index 5dbd90f..b8fd9ca 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,8 +1,3 @@ * euscan Original author: Corentin Chary Current maintainer: src_prepare group https://gitlab.com/src_prepare - -* euscanwww - Original author: Corentin Chary - Current maintainer: src_prepare group https://gitlab.com/src_prepare - diff --git a/LICENSE b/LICENSE index 60549be..d159169 100644 --- a/LICENSE +++ b/LICENSE @@ -1,12 +1,12 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to +the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not @@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE + + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in @@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -225,7 +225,7 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN @@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. @@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names: This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General +library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. diff --git a/Makefile b/Makefile deleted file mode 100644 index 8dc62c3..0000000 --- a/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# TODO: rename binary to euscan-ng -BIN = euscan - - -.PHONY: - all - clean - install-user - install-user-test - install-user-web - install - uninstall distclean - - -all: - @echo "Did nothing." - @echo "To do user installation use target: install-user" - - -install-user: - python setup.py -v install --user - -install-user-test: - pip install --user .'[test]' - -install-user-web: - pip install --user .'[web]' - -install: install-user - - -clean: - sh clean.sh - -uninstall: - pip uninstall -v -y $(BIN) - -distclean: clean uninstall diff --git a/README.rst b/README.rst index 01ace03..27e50a6 100644 --- a/README.rst +++ b/README.rst @@ -85,89 +85,6 @@ default settings. Maybe we should add the ability to use /etc/euscan.conf and ~/.config/euscan/euscan.conf to override these settings. -euscan-www: euscan as a service -=============================== - -euscan-www is a web application that aggregates euscan results. For example -there is an instance of euscan-www that monitors gentoo-x86 + some official -overlays currently hosted at http://euscan.iksaif.net/ . - -euscan-www uses django and provides some custom commands to feed the database. -You can use euscan-www on you system tree, or preferably you can use a local -tree to avoid messing with your system. - -Installation ------------- - -Install requirements from PyPI using:: - - $ python setup.py develop - -Extra dependencies: -* portage python api -* rrdtool[python] - -Like any django web app, just start by editing settings.py and then run -these two commands. -:: - - $ python manage.py syncdb - $ python manage.py migrate - -Now your instance is ready, you can just run this command to browse it. -If you want to host it publicly you should use a real webserver. -:: - - $ python manage.py runserver - -Creating a local tree (optional) --------------------------------- - -Create a local tree with all that portage (and layman would need). -There is an example in euscanwww/scripts/local-tree/. See escan-update.sh -to know what env variables you need to run any portage related command in -this local tree. - -Scanning process ----------------- - -The scanning process is done by euscan-update.sh. You should read carefully -this script, and adapt it to your needs. For example it uses gparallel to -launch multiple process at a time, and you should adapt that to your number -of cpu and network bandwith. - -Once your euscan-update.sh is ok, just run it. -:: - - $ sh euscan-update.sh - -Custom Django management commands ---------------------------------- - -euscan-www povides some new management commands, here is a short description -of these commands. Use "help" or read euscan-update.sh to get more informations. - -list-packages - List packages stored in database. - -scan-portage - Scan the portage tree and store new packages and versions in the database. - -scan-metadata - Scan metadata and looks for homepage, maintainers and herds. - -scan-upstream - Scan upstream package. The prefered way to use this script it to first launch - euscan on some packages, store the result of the file, and feed this command with - the result. - -update-counters - Update statistics and rrd files. - -regen-rrds - If you deleted your rrd files, this script will use the database to - regen them. - How does it work ? ================== diff --git a/TODO b/TODO index ee5f05f..61fd34c 100644 --- a/TODO +++ b/TODO @@ -61,7 +61,6 @@ euscanwww ### packages -- show additional informations in the web interface (remote-id, etc...) - Ignore alpha/beta if current is not alpha/beta: per-package setting using metadata.xml ? - ~arch / stable support: see "models: keywords" - stabilisation candidates: check stabilizations rules, and see how this can be automated diff --git a/bin/euscan b/bin/euscan index 30e96df..daffde6 100755 --- a/bin/euscan +++ b/bin/euscan @@ -1,8 +1,7 @@ #!/usr/bin/env python - -"""Copyright 2011 Gentoo Foundation -Distributed under the terms of the GNU General Public License v2 -""" +# Copyright 2011 Corentin Chary +# Copyright 2020-2023 src_prepare group +# Distributed under the terms of the GNU General Public License v2 import os @@ -11,32 +10,30 @@ import os __author__ = "Corentin Chary (iksaif)" __email__ = "corentin.chary@gmail.com" -__version__ = "git" -__productname__ = "euscan" +__productname__ = "euscan-ng" __description__ = "A tool to detect new upstream releases." # Imports -import sys import getopt +import sys from errno import EINTR, EINVAL from http.client import HTTPConnection -from portage import settings -from portage.output import white, yellow, turquoise, green -from portage.exception import AmbiguousPackageName - from gentoolkit import pprinter as pp from gentoolkit.errors import GentoolkitException +from portage import settings +from portage.exception import AmbiguousPackageName +from portage.output import green, turquoise, white, yellow from euscan import CONFIG, output +from euscan._version import __version__ from euscan.out import progress_bar - # Globals -isatty = os.environ.get('TERM') != 'dumb' and sys.stdout.isatty() -isatty_stderr = os.environ.get('TERM') != 'dumb' and sys.stderr.isatty() +isatty = os.environ.get("TERM") != "dumb" and sys.stdout.isatty() +isatty_stderr = os.environ.get("TERM") != "dumb" and sys.stderr.isatty() def exit_helper(status): @@ -62,11 +59,10 @@ def setup_signals(): def print_version(): """Output the version info.""" - print("%s (%s) - %s" \ - % (__productname__, __version__, __description__)) + print(f"{__productname__} ({__version__}) - {__description__}") print() - print("Author: %s <%s>" % (__author__, __email__)) - print("Copyright 2011 Gentoo Foundation") + print(f"Copyright 2011 {__author__} <{__email__}>") + print("Copyright 2020-2023 src_prepare group") print("Distributed under the terms of the GNU General Public License v2") @@ -78,78 +74,134 @@ def print_usage(_error=None, help=None): if _error: out = sys.stderr - if not _error in ('global-options', 'packages',): + if _error not in ( + "global-options", + "packages", + ): _error = None if not _error and not help: - help = 'all' + help = "all" - if _error in ('global-options',): + if _error in ("global-options",): output.eerror("Wrong option on command line.\n") - if _error in ('packages',): + if _error in ("packages",): output.eerror("You need to specify exactly one package.\n") print(white("Usage:"), file=out) - if _error in ('global-options', 'packages',) or help == 'all': - print(" " + turquoise(__productname__), - yellow("[options]"), - green(" [ [...]]"), file=out) - if _error in ('global-options',) or help == 'all': - print(" " + turquoise(__productname__), - yellow("[--help, --version]"), file=out) + if ( + _error + in ( + "global-options", + "packages", + ) + or help == "all" + ): + print( + " " + turquoise(__productname__), + yellow("[options]"), + green(" [ [...]]"), + file=out, + ) + if _error in ("global-options",) or help == "all": + print(" " + turquoise(__productname__), yellow("[--help, --version]"), file=out) print(file=out) - if _error in ('global-options',) or help: + if _error in ("global-options",) or help: print("Available ", yellow("options") + ":", file=out) - print(yellow(" -C, --nocolor") + - " - turn off colors on output", file=out) - print(yellow(" -q, --quiet") + - " - be as quiet as possible", file=out) - print(yellow(" -h, --help") + - " - display the help screen", file=out) - print(yellow(" -V, --version") + - " - display version info", file=out) + print( + yellow(" -C, --nocolor") + + " - turn off colors on output", + file=out, + ) + print( + yellow(" -q, --quiet") + + " - be as quiet as possible", + file=out, + ) + print( + yellow(" -h, --help") + + " - display the help screen", + file=out, + ) + print( + yellow(" -V, --version") + " - display version info", + file=out, + ) print(file=out) - print(yellow(" -1, --oneshot") + - " - stop as soon as a new version is found", - file=out) - print(yellow(" -b, --brute-force=") + - " - define the brute force " + yellow("") + - " (default: 2)\n" + - " " * 38 + "bigger levels will generate more versions numbers\n" + - " " * 38 + "0 means disabled", file=out) - print(yellow(" -f, --format=") + - " - define the output " + yellow("") + - " (available: json, xml)", file=out) - print(yellow(" -p, --progress") + - " - display a progress bar", file=out) - print(yellow(" -i, --ignore-pre-release") + - " " * 11 + "- Ignore non-stable versions", file=out) - print(yellow(" -I, --ignore-pre-release-if-stable") + - " - Ignore non-stable versions only if current\n" + - " " * 38 + "version is stable", file=out) - print(yellow(" --mirror") + - " - use mirror:// URIs", file=out) - print(yellow(" --ebuild-uri") + - " - use ebuild variables in URIs", file=out) - print(yellow(" --no-handlers") + - " - exclude handlers (comma-separated list)", - file=out) + print( + yellow(" -1, --oneshot") + + " - stop as soon as a new version is found", + file=out, + ) + print( + yellow(" -b, --brute-force=") + + " - define the brute force " + + yellow("") + + " (default: 2)\n" + + " " * 38 + + "bigger levels will generate more versions numbers\n" + + " " * 38 + + "0 means disabled", + file=out, + ) + print( + yellow(" -f, --format=") + + " - define the output " + + yellow("") + + " (available: json, xml)", + file=out, + ) + print( + yellow(" -p, --progress") + " - display a progress bar", + file=out, + ) + print( + yellow(" -i, --ignore-pre-release") + + " " * 11 + + "- Ignore non-stable versions", + file=out, + ) + print( + yellow(" -I, --ignore-pre-release-if-stable") + + " - Ignore non-stable versions only if current\n" + + " " * 38 + + "version is stable", + file=out, + ) + print( + yellow(" --mirror") + " - use mirror:// URIs", + file=out, + ) + print( + yellow(" --ebuild-uri") + + " - use ebuild variables in URIs", + file=out, + ) + print( + yellow(" --no-handlers") + + " - exclude handlers (comma-separated list)", + file=out, + ) print(file=out) - if _error in ('packages',) or help: - print(green(" package") + - " " * 28 + "- the packages (or ebuilds) you want to scan", - file=out) + if _error in ("packages",) or help: + print( + green(" package") + + " " * 28 + + "- the packages (or ebuilds) you want to scan", + file=out, + ) print(file=out) - #print( "More detailed instruction can be found in", - #turquoise("`man %s`" % __productname__), file=out) + # print( "More detailed instruction can be found in", + # turquoise("`man %s`" % __productname__), file=out) class ParseArgsException(Exception): """For parseArgs() -> main() communications.""" + def __init__(self, value): self.value = value @@ -168,92 +220,102 @@ def parse_args(): return_code = True for o, a in opts: if o in ("-h", "--help"): - raise ParseArgsException('help') + raise ParseArgsException("help") elif o in ("-V", "--version"): - raise ParseArgsException('version') + raise ParseArgsException("version") elif o in ("-C", "--nocolor"): - CONFIG['nocolor'] = True + CONFIG["nocolor"] = True pp.output.nocolor() elif o in ("-q", "--quiet"): - CONFIG['quiet'] = True - CONFIG['verbose'] = 0 + CONFIG["quiet"] = True + CONFIG["verbose"] = 0 elif o in ("-1", "--oneshot"): - CONFIG['oneshot'] = True + CONFIG["oneshot"] = True elif o in ("-b", "--brute-force"): - CONFIG['brute-force'] = int(a) - elif o in ("-v", "--verbose") and not CONFIG['quiet']: - CONFIG['verbose'] += 1 + CONFIG["brute-force"] = int(a) + elif o in ("-v", "--verbose") and not CONFIG["quiet"]: + CONFIG["verbose"] += 1 elif o in ("-f", "--format"): - CONFIG['format'] = a - CONFIG['nocolor'] = True + CONFIG["format"] = a + CONFIG["nocolor"] = True pp.output.nocolor() elif o in ("-p", "--progress"): - CONFIG['progress'] = isatty_stderr + CONFIG["progress"] = isatty_stderr elif o in ("--mirror"): - CONFIG['mirror'] = True + CONFIG["mirror"] = True elif o in ("-i", "--ignore-pre-release"): - CONFIG['ignore-pre-release'] = True + CONFIG["ignore-pre-release"] = True elif o in ("-I", "--ignore-pre-release-if-stable"): - CONFIG['ignore-pre-release-if-stable'] = True + CONFIG["ignore-pre-release-if-stable"] = True elif o in ("--ebuild-uri"): - CONFIG['ebuild-uri'] = True + CONFIG["ebuild-uri"] = True elif o in ("--no-handlers"): - CONFIG['handlers-exclude'] = a.split(",") + CONFIG["handlers-exclude"] = a.split(",") else: return_code = False return return_code # here are the different allowed command line options (getopt args) - getopt_options = {'short': {}, 'long': {}} - getopt_options['short']['global'] = "hVCqv1b:f:piI" - getopt_options['long']['global'] = [ - "help", "version", "nocolor", "quiet", "verbose", "oneshot", - "brute-force=", "format=", "progress", "mirror", "ignore-pre-release", - "ignore-pre-release-if-stable", "ebuild-uri", "no-handlers=" + getopt_options = {"short": {}, "long": {}} + getopt_options["short"]["global"] = "hVCqv1b:f:piI" + getopt_options["long"]["global"] = [ + "help", + "version", + "nocolor", + "quiet", + "verbose", + "oneshot", + "brute-force=", + "format=", + "progress", + "mirror", + "ignore-pre-release", + "ignore-pre-release-if-stable", + "ebuild-uri", + "no-handlers=", ] - short_opts = getopt_options['short']['global'] - long_opts = getopt_options['long']['global'] - opts_mode = 'global' + short_opts = getopt_options["short"]["global"] + long_opts = getopt_options["long"]["global"] + opts_mode = "global" # apply getopts to command line, show partial help on failure try: opts, args = getopt.getopt(sys.argv[1:], short_opts, long_opts) - except: - raise ParseArgsException(opts_mode + '-options') + except getopt.GetoptError: + raise ParseArgsException(opts_mode + "-options") # set options accordingly option_switch(opts) if len(args) < 1: - raise ParseArgsException('packages') + raise ParseArgsException("packages") return args def main(): """Parse command line and execute all actions.""" - CONFIG['nocolor'] = ( - CONFIG['nocolor'] or - (settings["NOCOLOR"] in ('yes', 'true') or not isatty) + CONFIG["nocolor"] = CONFIG["nocolor"] or ( + settings["NOCOLOR"] in ("yes", "true") or not isatty ) - if CONFIG['nocolor']: + if CONFIG["nocolor"]: pp.output.nocolor() # parse command line options and actions try: queries = parse_args() except ParseArgsException as e: - if e.value == 'help': - print_usage(help='all') + if e.value == "help": + print_usage(help="all") exit_helper(0) - elif e.value[:5] == 'help-': + elif e.value[:5] == "help-": print_usage(help=e.value[5:]) exit_helper(0) - elif e.value == 'version': + elif e.value == "version": print_version() exit_helper(0) @@ -261,14 +323,14 @@ def main(): print_usage(e.value) exit_helper(EINVAL) - if CONFIG['verbose'] > 2: + if CONFIG["verbose"] > 2: HTTPConnection.debuglevel = 1 - if not CONFIG["format"] and not CONFIG['quiet']: + if not CONFIG["format"] and not CONFIG["quiet"]: CONFIG["progress"] = False on_progress = None - if CONFIG['progress']: + if CONFIG["progress"]: on_progress_gen = progress_bar() on_progress = next(on_progress_gen) on_progress(maxval=len(queries) * 100, increment=0, label="Working...") @@ -293,35 +355,36 @@ def main(): from os.path import basename # To get the short name output.eerror( - "The short ebuild name '%s' is ambiguous. Please specify" % - basename(pkgs[0]) + - "one of the above fully-qualified ebuild names instead." + "The short ebuild name '%s' is ambiguous. Please specify" + % basename(pkgs[0]) + + "one of the above fully-qualified ebuild names instead." ) exit_helper(1) except GentoolkitException as err: - output.eerror('%s: %s' % (query, str(err))) + output.eerror("%s: %s" % (query, str(err))) exit_helper(1) except Exception as err: import traceback - print ('-' * 60) - traceback.print_exc(file=sys.stderr) - print ('-' * 60) - output.eerror('%s: %s' % (query, str(err))) + print("-" * 60) + traceback.print_exc(file=sys.stderr) + print("-" * 60) + + output.eerror("%s: %s" % (query, str(err))) exit_helper(1) - if not ret and not CONFIG['quiet']: + if not ret and not CONFIG["quiet"]: output.einfo( - "Didn't find any new version, check package's homepage " + - "for more informations" + "Didn't find any new version, check package's homepage " + + "for more informations" ) - if not (CONFIG['format'] or CONFIG['quiet']) and len(queries) > 1: + if not (CONFIG["format"] or CONFIG["quiet"]) and len(queries) > 1: print("") - if CONFIG['progress']: + if CONFIG["progress"]: next(on_progress_gen) print("\n", file=sys.stderr) diff --git a/bin/euscan_patch_metadata b/bin/euscan_patch_metadata index 7bfdfa1..746fd2e 100755 --- a/bin/euscan_patch_metadata +++ b/bin/euscan_patch_metadata @@ -1,20 +1,22 @@ #!/usr/bin/env python +# Copyright 2011 Corentin Chary +# Copyright 2020-2023 src_prepare group +# Distributed under the terms of the GNU General Public License v2 -import os -import sys -import re -import urllib -from tempfile import mkstemp -import tarfile import gzip import logging +import os +import re import shutil +import sys +import tarfile +import urllib from difflib import unified_diff +from tempfile import mkstemp -from portage.exception import AmbiguousPackageName -from gentoolkit.query import Query from BeautifulSoup import BeautifulSoup, SoupStrainer - +from gentoolkit.query import Query +from portage.exception import AmbiguousPackageName logger = logging.getLogger(__name__) @@ -28,25 +30,25 @@ def guess_indent_values(before): def guess_for_tags(tags): for tag in tags: for i in [0, 2, 4, 6, 8, 12, 16]: - if '\n%s<%s' % (' ' * i, tag) in before: + if "\n%s<%s" % (" " * i, tag) in before: return i, False for i in [0, 1, 2]: - if '\n%s<%s' % ('\t' * i, tag) in before: + if "\n%s<%s" % ("\t" * i, tag) in before: return i, True return -1, False rindent, tab = guess_for_tags( - ['herd', 'maintainer', 'longdescription', 'use', 'upstream'] + ["herd", "maintainer", "longdescription", "use", "upstream"] ) if rindent == -1: rindent = 2 - rindent_str = ('\t' if tab else ' ') * rindent - indent, tab = guess_for_tags(['watch', 'name', 'email']) + rindent_str = ("\t" if tab else " ") * rindent + indent, tab = guess_for_tags(["watch", "name", "email"]) if indent == -1: indent = rindent * 2 if rindent else 4 - if rindent and rindent_str == '\t': + if rindent and rindent_str == "\t": tab = True - indent_str = ('\t' if tab else ' ') * indent + indent_str = ("\t" if tab else " ") * indent return rindent_str, indent_str @@ -66,7 +68,7 @@ def handle_diff(deb_url): watch_data = "" - fp = gzip.open(temp_deb, 'rb') + fp = gzip.open(temp_deb, "rb") for line in fp: if re.match(r"\+\+\+ .+?/debian/watch", line): fp.readline() # diff lines, don't care @@ -128,7 +130,7 @@ def get_deb_url(name): if not deb_url: logger.error(" Cannot get package from %s" % url) - name = raw_input(" Package name in Debian: ") + name = input(" Package name in Debian: ") return deb_url, deb_type @@ -144,8 +146,9 @@ def patch_metadata(package, watch_data, diff=False): data = original # clean watch_data - watch_data = "\n".join([line for line in watch_data.split("\n") - if not line.startswith("#")]) # comments + watch_data = "\n".join( + [line for line in watch_data.split("\n") if not line.startswith("#")] + ) # comments watch_data = watch_data.replace("\\\n", "") # remove backslashes @@ -163,10 +166,7 @@ def patch_metadata(package, watch_data, diff=False): continue # parse watch_line - result = re.match( - r'(?:opts=(?:"([^"]+?)"|([^\s]+?)) )?(.*)', - watch_line - ) + result = re.match(r'(?:opts=(?:"([^"]+?)"|([^\s]+?)) )?(.*)', watch_line) opts_quote, opts, url = result.groups() opts = opts_quote or opts @@ -188,21 +188,27 @@ def patch_metadata(package, watch_data, diff=False): url = " ".join([x for x in url_search.groups() if x is not None]) if opts: - watch_tag = '%s%s' % \ - (indent, version, opts, url) + watch_tag = '%s%s' % ( + indent, + version, + opts, + url, + ) else: - watch_tag = '%s%s' % \ - (indent, version, url) + watch_tag = '%s%s' % (indent, version, url) watch_tags.append(watch_tag) watch_tags = "\n".join(watch_tags) - if '' in data: - data = data.replace('', '\n%s' % watch_tags, 1) + if "" in data: + data = data.replace("", "\n%s" % watch_tags, 1) else: - rep = '%s\n%s\n%s\n' % \ - (rindent, watch_tags, rindent) - data = data.replace('', rep, 1) + rep = "%s\n%s\n%s\n" % ( + rindent, + watch_tags, + rindent, + ) + data = data.replace("", rep, 1) if not diff: return data @@ -214,8 +220,8 @@ def patch_metadata(package, watch_data, diff=False): res = unified_diff( original.splitlines(True), data.splitlines(True), - fromfile=os.path.join('a/', metadata_path), - tofile=os.path.join('b/', metadata_path), + fromfile=os.path.join("a/", metadata_path), + tofile=os.path.join("b/", metadata_path), ) return "".join([x for x in res]) @@ -223,12 +229,12 @@ def patch_metadata(package, watch_data, diff=False): def process_package(query, diff=False): try: matches = Query(query).smart_find( - in_installed=True, - in_porttree=True, - in_overlay=True, - include_masked=True, - show_progress=False, - no_matches_fatal=False, + in_installed=True, + in_porttree=True, + in_overlay=True, + include_masked=True, + show_progress=False, + no_matches_fatal=False, ) except AmbiguousPackageName: logger.error(" Ambiguous package name") @@ -240,7 +246,7 @@ def process_package(query, diff=False): matches = sorted(matches) package = matches.pop() - if '9999' in package.version and len(matches) > 0: + if "9999" in package.version and len(matches) > 0: package = matches.pop() watch_data = get_watch_data(package) @@ -252,16 +258,21 @@ def process_package(query, diff=False): def main(): import optparse + p = optparse.OptionParser( usage="usage: %prog [ [...]]", ) - p.add_option('-d', '--diff', action="store_true", dest="diff", - default=False, - help="Outputs a diff") + p.add_option( + "-d", + "--diff", + action="store_true", + dest="diff", + default=False, + help="Outputs a diff", + ) opts, packages = p.parse_args() - logging.basicConfig(stream=sys.stderr, level=logging.INFO, - format='%(message)s') + logging.basicConfig(stream=sys.stderr, level=logging.INFO, format="%(message)s") for package in packages: logger.info("Processing %s..." % package) @@ -269,5 +280,6 @@ def main(): if result: sys.stdout.write(result) + if __name__ == "__main__": main() diff --git a/clean.sh b/clean.sh deleted file mode 100755 index c2be441..0000000 --- a/clean.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - - -rm -drv build -rm -drv dist -find . -name "*.egg*" -exec rm -drv {} \; -find . -name "*__pycache__*" -exec rm -drv {} \; - -exit 0 diff --git a/euscanwww/.gitignore b/euscanwww/.gitignore deleted file mode 100644 index 73c561d..0000000 --- a/euscanwww/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -var/cache/*/ -var/charts/*.png -var/rrd/*.rrd -var/db/euscan.db -var/db/euscan.db-journal -local_settings.py diff --git a/euscanwww/INSTALL b/euscanwww/INSTALL deleted file mode 100644 index d6b6cfc..0000000 --- a/euscanwww/INSTALL +++ /dev/null @@ -1,45 +0,0 @@ -## Basic Install - -# Create local_settings.py, you can override settings.py stuff here -# You should at least define SECRET_KEY -touch euscanwww/local_settings.py - -# Initialize database -./manage.py syncdb -./manage.py migrate - -# emerge euscan, or add euscan to your path somehow - -# Scan htop -./manage.py scan-portage htop # Scan ebuilds -./manage.py scan-metadata htop # Lookup for maintainers, herds, etc... -./manage.py scan-upstream htop # Run euscan - -# Scan dev-python -eix --only-names -C dev-python | ./manage.py scan-portage -eix --only-names -C dev-python | ./manage.py scan-metadata -eix --only-names -C dev-python | ./manage.py scan-upstream - -# Update counters at end of scan -./manage.py update-counters # Update counters, graphs, etc... - -# Start server -./manage.py runserver - - -## Importing a snapshot - -# Remove database - -# Reinitialize database -./manage.py syncdb -./manage.py migrate - -# Import snapshot -./manage.py loaddata var/snapshots/snapshot-yyyymmdd.js - -rm -rf var/rrd/* -rm -rf var/cache/* -rm -rf var/charts/* - -./manage.py regen-rrds diff --git a/euscanwww/README.Celery b/euscanwww/README.Celery deleted file mode 100644 index 00884c5..0000000 --- a/euscanwww/README.Celery +++ /dev/null @@ -1,36 +0,0 @@ -Requirements -============ - -Installing requirements with setup.py is the easiest way, just run:: - - python setup.py develop - -or:: - - python setup.py install # to install euscan and requirements - -If you prefer to use portage just install dev-python/django-celery - -There's the need of having a broker for tasks. The default and reccommended -broker is RabbitMQ. -Install with:: -emerge rabbitmq-server - - -Running Celery -============== - -You'll need: -* celeryd (celery daemon for running tasks):: - - python manage.py celeryd -B -E -l INFO - -* celerycam (for monitoring celery and see the results in the django admin page):: - - python manage.py celerycam - - -TODO -==== - -Provide a supervisord configuration diff --git a/euscanwww/__init__.py b/euscanwww/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/__init__.py b/euscanwww/djeuscan/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/admin.py b/euscanwww/djeuscan/admin.py deleted file mode 100644 index bdf7f6b..0000000 --- a/euscanwww/djeuscan/admin.py +++ /dev/null @@ -1,60 +0,0 @@ -from djeuscan.models import Package, Version, VersionLog, EuscanResult, \ - Log, WorldLog, CategoryLog, HerdLog, MaintainerLog, Herd, Maintainer, \ - RefreshPackageQuery, Category, Overlay, ProblemReport -from django.contrib import admin - - -class EuscanResultAdmin(admin.ModelAdmin): - search_fields = ('package__name', 'package__category') - list_filter = ('datetime', 'package__category') - ordering = ["-datetime"] - - -class HerdAdmin(admin.ModelAdmin): - search_fields = ('herd', 'email') - ordering = ["herd"] - - -class MaintainerAdmin(admin.ModelAdmin): - search_fields = ('name', 'email') - ordering = ["name"] - - -class PackageAdmin(admin.ModelAdmin): - search_fields = ('category', 'name') - list_filter = ('category', ) - - -class VersionAdmin(admin.ModelAdmin): - search_fields = ('package__name', 'package__category') - list_filter = ('overlay', 'packaged') - - -class ProblemReportAdmin(admin.ModelAdmin): - list_display = ('package', 'subject', 'datetime') - search_fields = ('package__name', 'package__category') - list_filter = ('datetime', 'package__category') - ordering = ["-datetime"] - - -admin.site.register(Package, PackageAdmin) - -admin.site.register(Herd, HerdAdmin) -admin.site.register(Maintainer, MaintainerAdmin) - -admin.site.register(Version, VersionAdmin) -admin.site.register(VersionLog) - -admin.site.register(EuscanResult, EuscanResultAdmin) - -admin.site.register(Log) -admin.site.register(WorldLog) -admin.site.register(CategoryLog) -admin.site.register(HerdLog) -admin.site.register(MaintainerLog) - -admin.site.register(RefreshPackageQuery) -admin.site.register(Category) -admin.site.register(Overlay) - -admin.site.register(ProblemReport, ProblemReportAdmin) diff --git a/euscanwww/djeuscan/api/__init__.py b/euscanwww/djeuscan/api/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/api/emitters.py b/euscanwww/djeuscan/api/emitters.py deleted file mode 100644 index 1f7a63a..0000000 --- a/euscanwww/djeuscan/api/emitters.py +++ /dev/null @@ -1,51 +0,0 @@ -from piston.emitters import XMLEmitter - - -class EuscanXMLEmitter(XMLEmitter): - _parent = [] - _known_parents = { - 'vlog': 'version', - 'herds': 'herd', - 'maintainers': 'maintainer', - 'packaged': 'version', - 'upstream': 'version', - 'packages': 'package', - 'categories': 'category' - } - - def _push_parent(self, parent): - self._parent.append(parent) - - def _pop_parent(self): - if self._parent: - return self._parent.pop() - else: - return None - - def _current_parent(self): - if self._parent: - return self._parent[-1] - else: - return None - - def _name_from_parent(self): - return self._known_parents.get(self._current_parent(), 'resource') - - def _to_xml(self, xml, data): - def recurse(name, xml, item): - attrs = {} - xml.startElement(name, attrs) - self._push_parent(name) - self._to_xml(xml, item) - self._pop_parent() - xml.endElement(name) - - if isinstance(data, (list, tuple)): - for item in data: - name = self._name_from_parent() - recurse(name, xml, item) - elif isinstance(data, dict): - for key, value in data.iteritems(): - recurse(key, xml, value) - else: - super(EuscanXMLEmitter, self)._to_xml(xml, data) diff --git a/euscanwww/djeuscan/api/handlers.py b/euscanwww/djeuscan/api/handlers.py deleted file mode 100644 index 922fe16..0000000 --- a/euscanwww/djeuscan/api/handlers.py +++ /dev/null @@ -1,177 +0,0 @@ -from piston.handler import AnonymousBaseHandler -from piston.utils import rc - -from django.core.exceptions import ObjectDoesNotExist -from django.forms.models import model_to_dict - -from djeuscan.models import Version, Package, Herd, Maintainer, EuscanResult, \ - VersionLog -from djeuscan.helpers import catch_and_return - -# replace default XMLEmitter with ours -from piston.emitters import Emitter -from .emitters import EuscanXMLEmitter -Emitter.register('xml', EuscanXMLEmitter, 'text/xml; charset=utf-8') - - -# /api/1.0/ -class RootHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - return {'api-version': '1.0'} - - -# /api/1.0/statistics -class StatisticsHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - data = {} - data['n_packaged'] = Package.objects.n_packaged() - data['n_overlay'] = Package.objects.n_overlay() - data['n_versions'] = Package.objects.n_versions() - data['n_upstream'] = Package.objects.n_upstream() - data['n_packages'] = Package.objects.count() - data['n_herds'] = Herd.objects.count() - data['n_maintainers'] = Maintainer.objects.count() - data['last_scan'] = EuscanResult.objects.latest().datetime - - return data - - -# /api/1.0/maintainers -class MaintainersHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - maintainers = Package.objects.maintainers(rename=True) - - return {'maintainers': maintainers} - - -# /api/1.0/herds -class HerdsHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - # FIXME: optimize the query, it uses 'LEFT OUTER JOIN' - # instead of 'INNER JOIN' - herds = Package.objects.herds(rename=True) - - return {'herds': herds} - - -# /api/1.0/categories -class CategoriesHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - def read(self, request): - categories = Package.objects.categories() - - return {'categories': categories} - - -# /api/1.0/packages/by-maintainer/ -# /api/1.0/packages/by-category/ -# /api/1.0/packages/by-herd/ -class PackagesHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - fields = ('category', 'name', 'n_packaged', 'n_overlay', 'n_versions', - ('last_version_gentoo', ('version',)), - ('last_version_overlay', ('version',)), - ('last_version_upstream', ('version',))) - model = Package - - @catch_and_return(ObjectDoesNotExist, rc.NOT_FOUND) - def read(self, request, **kwargs): - data = {} - - if 'category' in kwargs: - packages = Package.objects.for_category( - kwargs['category'], - last_versions=True - ) - data = {'category': kwargs['category']} - elif 'herd' in kwargs: - herd = Herd.objects.get(herd=kwargs['herd']) - packages = Package.objects.for_herd(herd, last_versions=True) - data = {'herd': herd} - elif 'maintainer_id' in kwargs or 'maintainer_email' in kwargs: - if 'maintainer_id' in kwargs: - maintainer = Maintainer.objects.get(id=kwargs['maintainer_id']) - elif 'maintainer_email' in kwargs: - maintainer = Maintainer.objects.get(email=kwargs['maintainer_email']) - - packages = Package.objects.for_maintainer( - maintainer, - last_versions=True - ) - data = {'maintainer': maintainer} - - data['packages'] = packages - - if not data: - return rc.NOT_FOUND - - return data - - -# /api/1.0/package/ -class PackageHandler(AnonymousBaseHandler): - allowed_methods = ('GET',) - - @catch_and_return(ObjectDoesNotExist, rc.NOT_FOUND) - def read(self, request, category, package): - package = Package.objects.get(category=category, name=package) - - versions = Version.objects.filter(package=package) - - log = EuscanResult.objects.filter(package=package).\ - order_by('-datetime')[:1] - log = log[0] if log else None - - vlog = VersionLog.objects.for_package(package, order=True) - - herds = [] - for herd in package.herds.all(): - herds.append(model_to_dict(herd, ['herd'])) - - maintainers = [] - for maintainer in package.maintainers.all(): - maintainers.append(model_to_dict(maintainer, ['name', 'email'])) - - version_log = [] - for v in vlog: - v = model_to_dict(v, ['version', 'revision', 'slot', 'overlay', - 'datetime', 'action']) - if v['action'] == VersionLog.VERSION_ADDED: - v['action'] = 'added' - if v['action'] == VersionLog.VERSION_REMOVED: - v['action'] = 'removed' - version_log.append(v) - - upstream = [] - packaged = [] - for version in versions: - unpackaged = not version.packaged - version = model_to_dict( - version, - ['version', 'revision', 'slot', 'overlay', 'urls'] - ) - if unpackaged: - upstream.append(version) - else: - packaged.append(version) - - package = model_to_dict(package, ['category', 'name', 'description', - 'homepage']) - package['herds'] = herds - package['maintainers'] = maintainers - package['packaged'] = packaged - package['upstream'] = upstream - package['vlog'] = version_log - if log: - package['log'] = model_to_dict(log, ['result', 'datetime']) - - return package diff --git a/euscanwww/djeuscan/api/urls.py b/euscanwww/djeuscan/api/urls.py deleted file mode 100644 index 578a8be..0000000 --- a/euscanwww/djeuscan/api/urls.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.conf.urls.defaults import url, patterns - -from piston.resource import Resource -from handlers import RootHandler, StatisticsHandler, HerdsHandler, \ - CategoriesHandler, MaintainersHandler, PackagesHandler, PackageHandler - -root_handler = Resource(handler=RootHandler) -statistics_handler = Resource(handler=StatisticsHandler) -herds_handler = Resource(handler=HerdsHandler) -categories_handler = Resource(handler=CategoriesHandler) -maintainers_handler = Resource(handler=MaintainersHandler) -packages_handler = Resource(handler=PackagesHandler) -package_handler = Resource(handler=PackageHandler) - -urlpatterns = patterns('djeuscan.api.views', - url(r'^1.0/statistics\.(?P.+)$', statistics_handler, - name='api.views.statistics'), - url(r'^1.0/herds\.(?P.+)$', herds_handler, - name='api.views.herds'), - url(r'^1.0/categories\.(?P.+)$', categories_handler, - name='api.views.categories'), - url(r'^1.0/maintainers\.(?P.+)$', maintainers_handler, - name='api.views.maintainers'), - - url(r'^1.0/packages/by-maintainer/(?P\d+)\.(?P.+)$', - packages_handler, name='api.views.packages'), - url(r'^1.0/packages/by-maintainer/(?P[^/]+)\.(?P.+)$', - packages_handler, name='api.views.packages'), - url(r'^1.0/packages/by-herd/(?P[\@\{\}\w+.-]*)\.(?P.+)?$', - packages_handler, name='api.views.packages'), - url(r'^1.0/packages/by-category/(?P[\w+][\w+.-]*)\.(?P.+)?$', - packages_handler, name='api.views.packages'), - - url(r'^1.0/package/(?P[\w+][\w+.-]*)/(?P[\w+][\w+.-]*)\.(?P.+)$', - package_handler, name='api.views.package'), - - url(r'^1.0/api\.(?P.+)$', - root_handler, name='api.views.root'), -) diff --git a/euscanwww/djeuscan/charts.py b/euscanwww/djeuscan/charts.py deleted file mode 100644 index 4e4ca97..0000000 --- a/euscanwww/djeuscan/charts.py +++ /dev/null @@ -1,292 +0,0 @@ -import os.path -import time - -import rrdtool -import pylab - -from django.db.models import F - -from django.conf import settings -from djeuscan.models import Package - - -CHARTS_ROOT = os.path.join(settings.EUSCAN_ROOT, 'var', 'charts') -CHARTS_URL = os.path.join(settings.EUSCAN_ROOT, 'var', 'charts') -CHARTS_TTL = (24 * 60 * 60) - -pylab.rcParams['font.size'] = 10.0 -pylab.rcParams['axes.titlesize'] = 10.0 -pylab.rcParams['xtick.labelsize'] = 8.0 -pylab.rcParams['legend.fontsize'] = 8.0 - - -def chart_alive(name): - path = os.path.join(CHARTS_ROOT, name) - if not os.path.exists(path): - return False - if os.path.getmtime(__file__) > os.path.getmtime(path): - return False - if os.path.getmtime(path) + CHARTS_TTL < time.time(): - return False - return True - - -def rrd_name(**kwargs): - name = "" - - if 'category' in kwargs and kwargs['category']: - name = 'category-%s' % kwargs['category'] - elif 'herd' in kwargs and kwargs['herd']: - name = 'herd-%d' % kwargs['herd'].id - elif 'maintainer' in kwargs and kwargs['maintainer']: - name = 'maintainer-%d' % kwargs['maintainer'].id - else: - name = 'world' - - return name - - -def chart_name(name, **kwargs): - name = name.replace('_', '-') - - if 'category' in kwargs and kwargs['category']: - name += '-%s' % kwargs['category'] - if 'herd' in kwargs and kwargs['herd']: - name += '-h-%d' % kwargs['herd'].id - if 'maintainer' in kwargs and kwargs['maintainer']: - name += '-m-%d' % kwargs['maintainer'].id - - for kw in ('-small', '-weekly', '-monthly', '-yearly'): - if kw in kwargs: - name += kw - - return name + ".png" - - -def getpackages(**kwargs): - pkgs = Package.objects - - if 'category' in kwargs and kwargs['category']: - pkgs = Package.objects.for_category(kwargs['category']) - if 'herd' in kwargs and kwargs['herd']: - pkgs = Package.objects.for_herd(kwargs['herd']) - if 'maintainer' in kwargs and kwargs['maintainer']: - pkgs = Package.objects.for_maintainer(kwargs['maintainer']) - - return pkgs - - -def cached_pylab_chart(f): - def new_f(*args, **kwds): - name = chart_name(f.func_name, **kwds) - - if not chart_alive(name): - f(*args, **kwds) - pylab.savefig(os.path.join(CHARTS_ROOT, name)) - pylab.close() - - return name - - new_f.func_name = f.func_name - return new_f - - -@cached_pylab_chart -def pie_versions(**kwargs): - gpk = getpackages(**kwargs) - n_packaged = gpk.n_packaged() - n_overlay = gpk.n_overlay() - n_upstream = gpk.n_upstream() - - pylab.figure(1, figsize=(3.5, 3.5)) - - if n_overlay: - labels = 'Gentoo', 'Overlays', 'Upstream' - fracs = [n_packaged, n_overlay, n_upstream] - colors = '#008000', '#0B17FD', '#FF0000' - else: - labels = 'Gentoo', 'Upstream' - fracs = [n_packaged, n_upstream] - colors = '#008000', '#FF0000' - - pylab.pie(fracs, labels=labels, colors=colors, autopct='%1.1f%%', - shadow=True) - pylab.title('Versions', bbox={'facecolor': '0.8', 'pad': 5}) - - -@cached_pylab_chart -def pie_packages(**kwargs): - gpk = getpackages(**kwargs) - n_packages = gpk.count() - n_packages_uptodate_main = gpk.filter(n_versions=F('n_packaged')).count() - n_packages_uptodate_all = gpk.filter(n_versions=F('n_packaged') + \ - F('n_overlay')).count() - n_packages_outdated = n_packages - n_packages_uptodate_all - n_packages_uptodate_ovl = n_packages_uptodate_all - \ - n_packages_uptodate_main - - pylab.figure(1, figsize=(3.5, 3.5)) - - if n_packages_uptodate_ovl: - labels = 'Ok (gentoo)', 'Ok (overlays)', 'Outdated' - fracs = [n_packages_uptodate_main, n_packages_uptodate_ovl, - n_packages_outdated] - colors = '#008000', '#0B17FD', '#FF0000' - else: - labels = 'Ok (gentoo)', 'Outdated' - fracs = [n_packages_uptodate_main, n_packages_outdated] - colors = '#008000', '#FF0000' - - pylab.pie(fracs, labels=labels, colors=colors, autopct='%1.1f%%', - shadow=True) - pylab.title('Packages', bbox={'facecolor': '0.8', 'pad': 5}) - - -def rrd_path(name): - res = str(os.path.join(settings.RRD_ROOT, name)) - if res.endswith(".rrd"): - return res - else: - return res + ".rrd" - - -def rrd_create(name, start=None): - if start is None: - start = int(time.time()) - - path = rrd_path(name) - if not os.path.exists(path): - rrdtool.create(path, '--step', '86400', - '--start', '%s' % int(start - 10), - 'DS:n_packages_gentoo:GAUGE:4294967295:0:U', - 'DS:n_packages_overlay:GAUGE:4294967295:0:U', - 'DS:n_packages_outdated:GAUGE:4294967295:0:U', - 'DS:n_versions_gentoo:GAUGE:4294967295:0:U', - 'DS:n_versions_overlay:GAUGE:4294967295:0:U', - 'DS:n_versions_upstream:GAUGE:4294967295:0:U', - 'RRA:AVERAGE:0.5:1:100', - 'RRA:AVERAGE:0.5:5:200', - 'RRA:AVERAGE:0.5:10:200') - - -def rrd_update(name, datetime, values): - now = time.mktime(datetime.timetuple()) - rrd_create(name, now) - rrdtool.update( - rrd_path(name), - '%d:%d:%d:%d:%d:%d:%d' % \ - (now, values.n_packages_gentoo, values.n_packages_overlay, - values.n_packages_outdated, values.n_versions_gentoo, - values.n_versions_overlay, values.n_versions_upstream) - ) - - -""" -[-s|--start time] [-e|--end time] [-S|--step seconds] -[-t|--title string] [-v|--vertical-label string] -[-w|--width pixels] [-h|--height pixels] [-j|--only-graph] -[-D|--full-size-mode][-u|--upper-limit value] [-l|--lower-limit value] -[-u|--upper-limit value] [-l|--lower-limit value] [-r|--rigid] -[-A|--alt-autoscale] -[-M|--alt-autoscale-max] -[-J|--alt-autoscale-min] -""" - - -def cached_rrd_chart(f): - def new_f(*args, **kwds): - if 'period' not in kwds: - kwds['period'] = '-yearly' - - name = chart_name(f.func_name, **kwds) - path = os.path.join(CHARTS_ROOT, name) - - if not chart_alive(name): - kwds['title'] = '%s (%s)' % (f.func_name, kwds['period']) - kwds['steps'] = kwds['period'] - kwds['vertical-label'] = f.func_name - - kwds['rrd'] = rrd_path(rrd_name(**kwds)) - rrd_create(kwds['rrd']) # create the rrd file if it's not present - - kwds['path'] = path - - kwds['end'] = 'now' - - if kwds['period'] == '-weekly': - kwds['start'] = 'now-4weeks' - elif kwds['period'] == '-monthly': - kwds['start'] = 'now-12months' - else: - kwds['start'] = 'now-4years' - - if '-small' in kwds and kwds['-small']: - kwds['width'] = '100' - kwds['height'] = '30' - kwds['graph-mode'] = '--only-graph' - else: - kwds['width'] = '500' - kwds['height'] = '170' - kwds['graph-mode'] = '--full-size-mode' - - f(*args, **kwds) - - return name - - new_f.func_name = f.func_name - return new_f - - -@cached_rrd_chart -def packages(**kwargs): - path = str(kwargs['path']) - rrd = kwargs['rrd'] - - rrdtool.graph( - path, - '--imgformat', 'PNG', - '--width', kwargs['width'], - '--height', kwargs['height'], - kwargs['graph-mode'], - '--color', 'CANVAS#FFFFFF00', - '--color', 'BACK#FFFFFF00', - - '--start', kwargs['start'], - '--end', kwargs['end'], - '--vertical-label', kwargs['vertical-label'], - '--title', kwargs['title'], - '--lower-limit', '0', - 'DEF:n_packages_gentoo=%s:n_packages_gentoo:AVERAGE' % rrd, - 'DEF:n_packages_overlay=%s:n_packages_overlay:AVERAGE' % rrd, - 'DEF:n_packages_outdated=%s:n_packages_outdated:AVERAGE' % rrd, - 'LINE1.25:n_packages_gentoo#008000:Gentoo', - 'LINE1.25:n_packages_overlay#0B17FD:Overlay', - 'LINE1.25:n_packages_outdated#FF0000:Outdated' - ) - - -@cached_rrd_chart -def versions(**kwargs): - path = str(kwargs['path']) - rrd = kwargs['rrd'] - - rrdtool.graph( - path, - '--imgformat', 'PNG', - '--width', kwargs['width'], - '--height', kwargs['height'], - kwargs['graph-mode'], - '--color', 'CANVAS#FFFFFF00', - '--color', 'BACK#FFFFFF00', - '--start', kwargs['start'], - '--end', kwargs['end'], - '--vertical-label', kwargs['vertical-label'], - '--title', kwargs['title'], - '--lower-limit', '0', - 'DEF:n_versions_gentoo=%s:n_versions_gentoo:AVERAGE' % rrd, - 'DEF:n_versions_overlay=%s:n_versions_overlay:AVERAGE' % rrd, - 'DEF:n_versions_outdated=%s:n_versions_upstream:AVERAGE' % rrd, - 'LINE1.25:n_versions_gentoo#008000:Gentoo', - 'LINE1.25:n_versions_overlay#0B17FD:Overlay', - 'LINE1.25:n_versions_outdated#FF0000:Outdated' - ) diff --git a/euscanwww/djeuscan/feeds.py b/euscanwww/djeuscan/feeds.py deleted file mode 100644 index 62d4d78..0000000 --- a/euscanwww/djeuscan/feeds.py +++ /dev/null @@ -1,325 +0,0 @@ -import json -from urllib import urlencode - -from django.contrib.syndication.views import Feed, FeedDoesNotExist -from django.shortcuts import get_object_or_404 -from django.utils.feedgenerator import Atom1Feed -from django.core.urlresolvers import reverse -from django.db.models import Q - -from euscan.version import gentoo_unstable - -from djeuscan.models import Package, Herd, Maintainer, Version, VersionLog - -from euscan_accounts.helpers import get_profile - - -class StabilizationCandidatesFeed(Feed): - feed_type = Atom1Feed - author_name = 'euscan' - item_author_name = author_name - title = 'Stabilization candidates' - link = "/" - description = "Stabilization candidates" - ttl = 3600 - - def item_title(self, version): - return version.cpv() - - def item_description(self, version): - cpv = version.cpv() - maintainers = herds = "" - - if version.package.maintainers.all(): - maintainers = "Maintainers: {}\n".format( - ", ".join(str(m) for m in version.package.maintainers.all()) - ) - - if version.package.herds.all(): - herds = "Herds: {}\n".format( - ", ".join(str(h) for h in version.package.herds.all()) - ) - - bugs_link = "https://bugs.gentoo.org/buglist.cgi?quicksearch={}" - - comment = """ - This bug was filed via euscan - - How much have you used the package in question? - - Have you had any problems with the package? - - emerge --info: - - Other info: - {} {} - """.format(herds, maintainers) - comment = "\n".join([line.lstrip() for line in comment.split("\n")]) - description = """ - Added to tree: {date}
- {herds}
- {maintainers}
- Open bugs for {cat_pn}: - Show
- Open bugs for {pn}: - Show
- File bug - """.format( - date=version.stabilization_candidate, - herds=herds, - maintainers=maintainers, - cat_pn=version.package.cp(), - cat_bugs=bugs_link.format(version.package.cp()), - pn=version.package.name, - pn_bugs=bugs_link.format(version.package.name), - submit_bug='https://bugs.gentoo.org/enter_bug.cgi?{}'.format( - urlencode({ - "product": 'Gentoo Linux', - "short_desc": "Stable request for {}".format(cpv), - "comment": comment, - "keywords": 'STABLEREQ', - }) - ), - ) - return description - - def item_link(self, version): - kwargs = {'category': version.package.category, - 'package': version.package.name} - return "%s#version-%s" % ( - reverse('djeuscan.views.package', kwargs=kwargs), version.tag - ) - - def item_categories(self): - return ["stabilization_candidate"] - - def items(self): - versions = Version.objects.exclude(stabilization_candidate=None) - return versions.order_by("-stabilization_candidate") - - -class BaseFeed(Feed): - feed_type = Atom1Feed - author_name = 'euscan' - item_author_name = author_name - ttl = 3600 - - def item_title(self, vlog): - return str(vlog) - - def item_description(self, vlog): - if vlog.overlay: - txt = 'Version %s-%s [%s] of package %s ' % \ - (vlog.version, vlog.revision, vlog.slot, vlog.package) - else: - txt = 'Version %s of package %s ' % (vlog.version, vlog.package) - if vlog.action == vlog.VERSION_REMOVED: - if not vlog.overlay: - txt += 'has been removed upstream' - else: - txt += 'has been removed from overlay "%s"' % vlog.overlay - if vlog.action == vlog.VERSION_ADDED: - if not vlog.overlay: - txt += 'has been added upstream' - else: - txt += 'has been added to overlay "%s"' % vlog.overlay - - return txt - - def item_link(self, vlog): - kwargs = {'category': vlog.package.category, - 'package': vlog.package.name} - return "%s#version-%s" % ( - reverse('djeuscan.views.package', kwargs=kwargs), vlog.tag - ) - - def item_pubdate(self, vlog): - return vlog.datetime - - def item_categories(self, vlog): - return [vlog.package.category] - - def items(self, data=None): - user = data.get("user", None) if data else None - options = data.get("options", {}) if data else {} - - # first of all consider options, then user preferences - try: - upstream_info = json.loads(options.get("upstream_info", "1")) - portage_info = json.loads(options.get("portage_info", "1")) - show_adds = json.loads(options.get("show_adds", "1")) - show_removals = json.loads(options.get("show_removals", "1")) - ignore_pre = json.loads(options.get("ignore_pre", "0")) - ignore_pre_if_stable = json.loads( - options.get("ignore_pre_if_stable", "0") - ) - except ValueError: - return [] - - if user and not options: - profile = get_profile(user) - upstream_info = profile.feed_upstream_info - portage_info = profile.feed_portage_info - show_adds = profile.feed_show_adds - show_removals = profile.feed_show_removals - ignore_pre = profile.feed_ignore_pre - ignore_pre_if_stable = profile.feed_ignore_pre_if_stable - - ret, max_items = self._items(data) - - if not upstream_info: - ret = ret.exclude(overlay="") - if not portage_info: - ret = ret.exclude(~Q(overlay="")) - if not show_adds: - ret = ret.exclude(action=VersionLog.VERSION_ADDED) - if not show_removals: - ret = ret.exclude(action=VersionLog.VERSION_REMOVED) - if ignore_pre: - ret = ret.exclude(vtype__in=gentoo_unstable) - if ignore_pre_if_stable: - ret = ret.exclude( - ~Q(package__last_version_gentoo__vtype__in=gentoo_unstable), - vtype__in=gentoo_unstable - ) - - return ret.order_by("-datetime")[:max_items] - - -class GlobalFeed(BaseFeed): - title = "euscan" - link = "/" - description = "Last euscan changes" - - def get_object(self, request): - return {"options": request.GET} - - def categories(self, data): - categories = Package.objects.categories() - return [category['category'] for category in categories] - - def _items(self, data): - return VersionLog.objects.all(), 250 - - -class PackageFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, category, package): - return { - "obj": get_object_or_404(Package, category=category, name=package), - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.package', args=[data["obj"].category, - data["obj"].name]) - - def description(self, data): - return data["obj"].description - - def _items(self, data): - return VersionLog.objects.for_package(data["obj"]), 30 - - def item_description(self, vlog): - return '' - - -class MaintainerFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, maintainer_id=None, maintainer_email=None): - if maintainer_id: - obj = get_object_or_404(Maintainer, id=maintainer_id) - else: - obj = get_object_or_404(Maintainer, email=maintainer_email) - - return { - "obj": obj, - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def description(self, data): - return "Last changes for %s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.maintainer', args=[data["obj"].email]) - - def _items(self, data): - return VersionLog.objects.for_maintainer(data["obj"]), 50 - - -class HerdFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, herd): - return { - "obj": get_object_or_404(Herd, herd=herd), - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def description(self, data): - return "Last changes for %s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.herd', - kwargs={'herd': data["obj"].herd}) - - def _items(self, data): - return VersionLog.objects.for_herd(data["obj"]), 100 - - -class CategoryFeed(BaseFeed): - feed_type = Atom1Feed - - def get_object(self, request, category): - if not Package.objects.categories().count(): - raise FeedDoesNotExist - return { - "obj": category, - "options": request.GET, - } - - def title(self, data): - return "%s" % data["obj"] - - def description(self, data): - return "Last changes for %s" % data["obj"] - - def link(self, data): - return reverse('djeuscan.views.category', args=[data["obj"]]) - - def _items(self, data): - return VersionLog.objects.for_category(data["obj"]), 100 - - -class WorldScanFeed(BaseFeed): - link = "/" - - def get_object(self, request): - return { - "options": request.GET, - } - - def _items(self, data): - packages = [] - for pkg_name in data["options"].getlist("p", []): - if "/" in pkg_name: - cat, name = pkg_name.split("/", 1) - pkg = Package.objects.filter(name=name, category=cat) - else: - pkg = Package.objects.filter(name=pkg_name) - packages.extend(pkg) - - vlogs = VersionLog.objects.filter(package__in=packages) - - return vlogs, 100 diff --git a/euscanwww/djeuscan/forms.py b/euscanwww/djeuscan/forms.py deleted file mode 100644 index a1c6f65..0000000 --- a/euscanwww/djeuscan/forms.py +++ /dev/null @@ -1,28 +0,0 @@ -from django import forms -from djeuscan.models import Version, ProblemReport - - -class WorldForm(forms.Form): - world = forms.FileField() - - -class PackagesForm(forms.Form): - packages = forms.CharField(widget=forms.Textarea) - - -class ProblemReportForm(forms.ModelForm): - version = forms.ModelChoiceField(queryset=Version.objects.all(), - empty_label="all", required=False) - message = forms.CharField( - widget=forms.Textarea(attrs={'cols': 80, 'rows': 15}) - ) - - def __init__(self, package, *args, **kwargs): - super(ProblemReportForm, self).__init__(*args, **kwargs) - self.fields["version"].queryset = Version.objects.filter( - package=package - ) - - class Meta: - model = ProblemReport - fields = ('version', 'subject', 'message') diff --git a/euscanwww/djeuscan/helpers.py b/euscanwww/djeuscan/helpers.py deleted file mode 100644 index 171ba5e..0000000 --- a/euscanwww/djeuscan/helpers.py +++ /dev/null @@ -1,100 +0,0 @@ -""" -djeuscan.helpers -""" - -from distutils.version import StrictVersion, LooseVersion -from django.shortcuts import get_object_or_404 -from django.conf import settings - -from layman import Layman - -from portage.util import getconfig - - -def xint(i): - """ - Tries to cast to int, fallbacks to 0 - """ - try: - return int(i) - except Exception: - return 0 - - -def select_related_last_versions(queryset): - queryset = queryset.select_related( - 'last_version_gentoo', - 'last_version_overlay', - 'last_version_upstream' - ) - - -def version_key(version): - version = version.version - try: - return StrictVersion(version) - # in case of abnormal version number, fall back to LooseVersion - except ValueError: - return LooseVersion(version) - - -def packages_from_names(data): - """ - Returns a list of Package objects from a string of names - """ - - from djeuscan.models import Package - - packages = [] - data = data.replace("\r", "") - - for pkg in data.split('\n'): - if pkg.count('/') == 1: - cat, pkg = pkg.split('/') - packages.extend(Package.objects.filter(category=cat, name=pkg)) - else: - packages.extend(Package.objects.filter(name=pkg)) - return packages - - -def rename_fields(vqs, fields): - ret = [] - for n in vqs: - for tr in fields: - if tr[0] in n: - n[tr[1]] = n[tr[0]] - del n[tr[0]] - ret.append(n) - return ret - - -class catch_and_return(object): - def __init__(self, err, response): - self.err = err - self.response = response - - def __call__(self, fn): - def wrapper(*args, **kwargs): - try: - return fn(*args, **kwargs) - except self.err: - return self.response - return wrapper - - -def get_maintainer_or_404(id=None, email=None): - from djeuscan.models import Maintainer - if id: - return get_object_or_404(Maintainer, pk=id) - else: - return get_object_or_404(Maintainer, email=email) - - -def get_make_conf(): - return getconfig(settings.MAKE_CONF, tolerant=1, allow_sourcing=True) - - -def get_layman_repos(): - lay = Layman(config=settings.LAYMAN_CONFIG) - installed_overlays = lay.get_installed() - return lay.get_all_info(installed_overlays) diff --git a/euscanwww/djeuscan/management/__init__.py b/euscanwww/djeuscan/management/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/management/commands/__init__.py b/euscanwww/djeuscan/management/commands/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/management/commands/list_packages.py b/euscanwww/djeuscan/management/commands/list_packages.py deleted file mode 100644 index 23efe7a..0000000 --- a/euscanwww/djeuscan/management/commands/list_packages.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys -from optparse import make_option - -from django.core.management.base import BaseCommand -from djeuscan.models import Package - - -def list_packages(stdout=None, **options): - if stdout is None: - stdout = sys.stdout - - after = None - before = None - - if options['after']: - category, name = options['after'].split('/') - after = Package.objects.get(category=category, name=name) - - if options['before']: - category, name = options['before'].split('/') - before = Package.objects.get(category=category, name=name) - - packages = Package.objects - - if after or before: - if after: - packages = packages.filter(id__gte=after.id) - if before: - packages = packages.filter(id__lte=before.id) - else: - packages = packages.all() - - if options['limit']: - packages = packages[:int(options['limit'])] - - for pkg in packages: - stdout.write('%s/%s\n' % (pkg.category, pkg.name)) - stdout.close() - - -class Command(BaseCommand): - _overlays = {} - help = 'List packages' - - option_list = BaseCommand.option_list + ( - make_option('--after', - action='store', - dest='after', - default=False, - help='After package'), - make_option('--before', - action='store', - dest='before', - default=False, - help='Before package'), - make_option('--limit', - action='store', - dest='limit', - default=False, - help='limit'), - ) - - def handle(self, *args, **options): - list_packages(self.stdout, **options) diff --git a/euscanwww/djeuscan/management/commands/regen_rrds.py b/euscanwww/djeuscan/management/commands/regen_rrds.py deleted file mode 100644 index 82c3fd4..0000000 --- a/euscanwww/djeuscan/management/commands/regen_rrds.py +++ /dev/null @@ -1,16 +0,0 @@ -import logging -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import regen_rrds - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - help = 'Regenerate rrd database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - regen_rrds(logger=logger) diff --git a/euscanwww/djeuscan/management/commands/scan_metadata.py b/euscanwww/djeuscan/management/commands/scan_metadata.py deleted file mode 100644 index 7fb5b52..0000000 --- a/euscanwww/djeuscan/management/commands/scan_metadata.py +++ /dev/null @@ -1,52 +0,0 @@ -import sys -import logging -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.scan import scan_metadata - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option('--all', - action='store_true', - dest='all', - default=False, - help='Scan all packages'), - make_option('--category', - action='store', - dest='category', - default=None, - help='Scan only this category'), - make_option('--populate', - action='store_true', - dest='populate', - default=False, - help='Populate herds and maintainers from herds.xml'), - ) - args = '' - help = 'Scans metadata and fills database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - - if options['all'] or options['category']: - packages = None - - elif len(args): - packages = [pkg for pkg in args] - else: - packages = [pkg[:-1] for pkg in sys.stdin.readlines()] - - scan_metadata( - packages=packages, - category=options['category'], - logger=logger, - populate=options['populate'], - ) diff --git a/euscanwww/djeuscan/management/commands/scan_portage.py b/euscanwww/djeuscan/management/commands/scan_portage.py deleted file mode 100644 index f1d9485..0000000 --- a/euscanwww/djeuscan/management/commands/scan_portage.py +++ /dev/null @@ -1,69 +0,0 @@ -import sys -import logging -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.scan import scan_portage - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option('--all', - action='store_true', - dest='all', - default=False, - help='Scan all packages'), - make_option('--category', - action='store', - dest='category', - default=None, - help='Scan only this category'), - make_option('--purge-packages', - action='store_true', - dest='purge-packages', - default=False, - help='Purge old packages'), - make_option('--purge-versions', - action='store_true', - dest='purge-versions', - default=False, - help='Purge old versions'), - make_option('--upstream', - action='store_true', - dest='upstream', - default=False, - help='Scan upstream for updated packages in Portage'), - make_option('--no-log', - action='store_true', - dest='no-log', - default=False, - help='Don\'t store logs'), - ) - args = '[package package ...]' - help = 'Scans portage tree and fills database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - - if options['all'] or options['category']: - packages = None - elif len(args): - packages = [pkg for pkg in args] - else: - packages = [pkg[:-1] for pkg in sys.stdin.readlines()] - - scan_portage( - packages=packages, - category=options['category'], - no_log=options["no-log"], - purge_packages=options["purge-packages"], - purge_versions=options["purge-versions"], - upstream=options["upstream"], - logger=logger, - ) diff --git a/euscanwww/djeuscan/management/commands/scan_upstream.py b/euscanwww/djeuscan/management/commands/scan_upstream.py deleted file mode 100644 index a1528d4..0000000 --- a/euscanwww/djeuscan/management/commands/scan_upstream.py +++ /dev/null @@ -1,45 +0,0 @@ -import logging -import sys -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.scan import scan_upstream - -logger = logging.getLogger(__name__) - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option('--all', - action='store_true', - dest='all', - default=False, - help='Scan all packages'), - make_option('--purge-versions', - action='store_true', - dest='purge-versions', - default=False, - help='Purge old versions'), - ) - args = '' - help = 'Scans metadata and fills database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - - if options['all']: - packages = None - - elif len(args): - packages = [pkg for pkg in args] - else: - packages = [pkg[:-1] for pkg in sys.stdin.readlines()] - - scan_upstream( - packages=packages, - purge_versions=options["purge-versions"], - logger=logger, - ) diff --git a/euscanwww/djeuscan/management/commands/stabilization_candidates.py b/euscanwww/djeuscan/management/commands/stabilization_candidates.py deleted file mode 100644 index 890e0d1..0000000 --- a/euscanwww/djeuscan/management/commands/stabilization_candidates.py +++ /dev/null @@ -1,28 +0,0 @@ -import logging -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import stabilization_candidates -from optparse import make_option - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - - option_list = BaseCommand.option_list + ( - make_option( - '-d', - '--days-to-candidate', - action='store_true', - dest='all', - default=30, - help='Minimum of days to be in tree for becoming stable.' - ), - ) - help = 'Collects stabilization candidates' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - stabilization_candidates(logger=logger) \ No newline at end of file diff --git a/euscanwww/djeuscan/management/commands/update_counters.py b/euscanwww/djeuscan/management/commands/update_counters.py deleted file mode 100644 index 35d1830..0000000 --- a/euscanwww/djeuscan/management/commands/update_counters.py +++ /dev/null @@ -1,35 +0,0 @@ -import logging -from optparse import make_option - -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import update_counters - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - help = 'Update counters' - - option_list = BaseCommand.option_list + ( - make_option('--fast', - action='store_true', - dest='fast', - default=False, - help='Skip sanity checks'), - make_option('--nolog', - action='store_true', - dest='nolog', - default=False, - help='Skip logs'), - ) - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - update_counters( - fast=options["fast"], - nolog=options["nolog"], - logger=logger, - ) diff --git a/euscanwww/djeuscan/management/commands/update_portage_trees.py b/euscanwww/djeuscan/management/commands/update_portage_trees.py deleted file mode 100644 index b114548..0000000 --- a/euscanwww/djeuscan/management/commands/update_portage_trees.py +++ /dev/null @@ -1,16 +0,0 @@ -import logging -from django.core.management.base import BaseCommand - -from djeuscan.processing import set_verbosity_level -from djeuscan.processing.misc import update_portage_trees - -logger = logging.getLogger(__name__) - - -class Command(BaseCommand): - _overlays = {} - help = 'Regenerate rrd database' - - def handle(self, *args, **options): - set_verbosity_level(logger, options.get("verbosity", 1)) - update_portage_trees(logger=logger) diff --git a/euscanwww/djeuscan/managers.py b/euscanwww/djeuscan/managers.py deleted file mode 100644 index a55f38c..0000000 --- a/euscanwww/djeuscan/managers.py +++ /dev/null @@ -1,187 +0,0 @@ -""" -djeuscan.managers -""" - -from django.db import models -from djeuscan.helpers import xint, rename_fields, select_related_last_versions - - -def _gen_n_function(field_name): - def n_method(self): - res = self.aggregate(models.Sum(field_name))[field_name + '__sum'] - return xint(res) - n_method.func_name = field_name - return n_method - - -def _gen_for_function(field): - def for_method(self, val, last_versions=False): - """ - Returns packages that belong to the given parametrs - """ - res = self.filter(**{field: val}) - - if last_versions: - select_related_last_versions(res) - - return res - - for_method.func_name = 'for_' + field - return for_method - - -ANNOTATE_DICT = {name: models.Sum(name) - for name in ['n_packaged', 'n_overlay', 'n_versions']} - - -class PackageMixin(object): - for_maintainer = _gen_for_function('maintainers') - for_herd = _gen_for_function('herds') - for_category = _gen_for_function('category') - - n_packaged = _gen_n_function("n_packaged") - n_overlay = _gen_n_function("n_overlay") - n_versions = _gen_n_function("n_versions") - - def n_upstream(self): - return self.n_versions() - self.n_packaged() - self.n_overlay() - - def categories(self): - """ - Returns all the available categories - """ - return self.values('category').annotate(**ANNOTATE_DICT) - - def herds(self, ids=None, rename=False): - """ - Returns all the available herds - """ - # FIXME: optimize the query, it uses 'LEFT OUTER JOIN' instead of - # 'INNER JOIN' - if ids is not None: - res = self.filter(herds__id__in=ids) - else: - res = self.filter(herds__isnull=False) - res = res.values('herds__herd').annotate(**ANNOTATE_DICT) - - if rename: - res = rename_fields(res, [('herds__herd', 'herd')]) - - return res - - def maintainers(self, ids=None, rename=False): - """ - Returns all the available maintainers - """ - if ids is not None: - res = self.filter(maintainers__id__in=ids) - else: - res = self.filter(maintainers__isnull=False) - - res = res.values( - 'maintainers__id', 'maintainers__name', 'maintainers__email' - ) - res = res.annotate(**ANNOTATE_DICT) - - if rename: - res = rename_fields( - res, - [('maintainers__id', 'id'), - ('maintainers__name', 'name'), - ('maintainers__email', 'email')] - ) - - return res - - def overlays(self): - """ - Returns the all available overlays - """ - res = self.values('version__overlay').exclude(version__overlay='') - return [o["version__overlay"] for o in res.distinct()] - - def for_overlay(self, overlay): - """ - Returns packages that belong to the given overlay - """ - packages = self.values( - 'id', 'name', 'category', 'n_versions', 'n_packaged', 'n_overlay' - ) - return packages.filter(version__overlay=overlay).distinct() - - def for_handler(self, handler): - """ - Returns packages that belong to the given handler - """ - packages = self.values( - 'id', 'name', 'category', 'n_versions', 'n_packaged', 'n_overlay' - ) - return packages.filter(version__handler=handler, - version__overlay="").distinct() - - -class PackageQuerySet(models.query.QuerySet, PackageMixin): - pass - - -class PackageManager(models.Manager, PackageMixin): - def get_query_set(self): - return PackageQuerySet(self.model, using=self._db) - - -class VersionLogMixin(object): - def for_package(self, package, order=False): - res = self.filter(package=package) - if order: - res = res.order_by('-id') - return res - - def for_maintainer(self, maintainer, order=False): - res = self.filter(package__maintainers__id=maintainer.id) - if order: - res = res.order_by('-id') - return res - - def for_category(self, category, order=False): - res = self.filter(package__category=category) - if order: - res = res.order_by('-id') - return res - - def for_herd(self, herd, order=False): - res = self.filter(package__herds__id=herd.id) - if order: - res = res.order_by('-id') - return res - - -class VersionLogQuerySet(models.query.QuerySet, VersionLogMixin): - pass - - -class VersionLogManager(models.Manager, VersionLogMixin): - def get_query_set(self): - return VersionLogQuerySet(self.model, using=self._db) - - -class EuscanResultMixin(object): - def for_package(self, package): - return self.filter(package=package) - - def for_maintainer(self, maintainer): - return self.filter(package__maintainers__id=maintainer.id) - - def for_category(self, category): - return self.filter(package__category=category) - - def for_herd(self, herd): - return self.filter(package__herds__id=herd.id) - - -class EuscanResultQuerySet(models.query.QuerySet, EuscanResultMixin): - pass - - -class EuscanResultManager(models.Manager, EuscanResultMixin): - def get_query_set(self): - return EuscanResultQuerySet(self.model, using=self._db) diff --git a/euscanwww/djeuscan/migrations/0001_initial.py b/euscanwww/djeuscan/migrations/0001_initial.py deleted file mode 100644 index d05d2e8..0000000 --- a/euscanwww/djeuscan/migrations/0001_initial.py +++ /dev/null @@ -1,283 +0,0 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Adding model 'Herd' - db.create_table('djeuscan_herd', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('herd', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)), - ('email', self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True)), - )) - db.send_create_signal('djeuscan', ['Herd']) - - # Adding model 'Maintainer' - db.create_table('djeuscan_maintainer', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('email', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)), - )) - db.send_create_signal('djeuscan', ['Maintainer']) - - # Adding model 'Package' - db.create_table('djeuscan_package', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('description', self.gf('django.db.models.fields.TextField')(blank=True)), - ('homepage', self.gf('django.db.models.fields.CharField')(max_length=256, blank=True)), - ('n_versions', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_packaged', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_overlay', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('last_version_gentoo', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_version_gentoo', null=True, to=orm['djeuscan.Version'])), - ('last_version_overlay', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_version_overlay', null=True, to=orm['djeuscan.Version'])), - ('last_version_upstream', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='last_version_upstream', null=True, to=orm['djeuscan.Version'])), - )) - db.send_create_signal('djeuscan', ['Package']) - - # Adding unique constraint on 'Package', fields ['category', 'name'] - db.create_unique('djeuscan_package', ['category', 'name']) - - # Adding M2M table for field herds on 'Package' - db.create_table('djeuscan_package_herds', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('package', models.ForeignKey(orm['djeuscan.package'], null=False)), - ('herd', models.ForeignKey(orm['djeuscan.herd'], null=False)) - )) - db.create_unique('djeuscan_package_herds', ['package_id', 'herd_id']) - - # Adding M2M table for field maintainers on 'Package' - db.create_table('djeuscan_package_maintainers', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('package', models.ForeignKey(orm['djeuscan.package'], null=False)), - ('maintainer', models.ForeignKey(orm['djeuscan.maintainer'], null=False)) - )) - db.create_unique('djeuscan_package_maintainers', ['package_id', 'maintainer_id']) - - # Adding model 'Version' - db.create_table('djeuscan_version', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('slot', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('revision', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('version', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('packaged', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('overlay', self.gf('django.db.models.fields.CharField')(default='gentoo', max_length=128, db_index=True)), - ('urls', self.gf('django.db.models.fields.TextField')(blank=True)), - ('alive', self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True)), - )) - db.send_create_signal('djeuscan', ['Version']) - - # Adding unique constraint on 'Version', fields ['package', 'slot', 'revision', 'version', 'overlay'] - db.create_unique('djeuscan_version', ['package_id', 'slot', 'revision', 'version', 'overlay']) - - # Adding model 'VersionLog' - db.create_table('djeuscan_versionlog', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('datetime', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), - ('slot', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('revision', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('version', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('packaged', self.gf('django.db.models.fields.BooleanField')(default=False)), - ('overlay', self.gf('django.db.models.fields.CharField')(default='gentoo', max_length=128)), - ('action', self.gf('django.db.models.fields.IntegerField')()), - )) - db.send_create_signal('djeuscan', ['VersionLog']) - - # Adding model 'EuscanResult' - db.create_table('djeuscan_euscanresult', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('datetime', self.gf('django.db.models.fields.DateTimeField')()), - ('result', self.gf('django.db.models.fields.TextField')(blank=True)), - )) - db.send_create_signal('djeuscan', ['EuscanResult']) - - # Adding model 'Log' - db.create_table('djeuscan_log', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('datetime', self.gf('django.db.models.fields.DateTimeField')()), - ('n_packages_gentoo', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_packages_overlay', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_packages_outdated', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_versions_gentoo', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_versions_overlay', self.gf('django.db.models.fields.IntegerField')(default=0)), - ('n_versions_upstream', self.gf('django.db.models.fields.IntegerField')(default=0)), - )) - db.send_create_signal('djeuscan', ['Log']) - - # Adding model 'WorldLog' - db.create_table('djeuscan_worldlog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - )) - db.send_create_signal('djeuscan', ['WorldLog']) - - # Adding model 'CategoryLog' - db.create_table('djeuscan_categorylog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['CategoryLog']) - - # Adding model 'HerdLog' - db.create_table('djeuscan_herdlog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - ('herd', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Herd'])), - )) - db.send_create_signal('djeuscan', ['HerdLog']) - - # Adding model 'MaintainerLog' - db.create_table('djeuscan_maintainerlog', ( - ('log_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['djeuscan.Log'], unique=True, primary_key=True)), - ('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Maintainer'])), - )) - db.send_create_signal('djeuscan', ['MaintainerLog']) - - - def backwards(self, orm): - - # Removing unique constraint on 'Version', fields ['package', 'slot', 'revision', 'version', 'overlay'] - db.delete_unique('djeuscan_version', ['package_id', 'slot', 'revision', 'version', 'overlay']) - - # Removing unique constraint on 'Package', fields ['category', 'name'] - db.delete_unique('djeuscan_package', ['category', 'name']) - - # Deleting model 'Herd' - db.delete_table('djeuscan_herd') - - # Deleting model 'Maintainer' - db.delete_table('djeuscan_maintainer') - - # Deleting model 'Package' - db.delete_table('djeuscan_package') - - # Removing M2M table for field herds on 'Package' - db.delete_table('djeuscan_package_herds') - - # Removing M2M table for field maintainers on 'Package' - db.delete_table('djeuscan_package_maintainers') - - # Deleting model 'Version' - db.delete_table('djeuscan_version') - - # Deleting model 'VersionLog' - db.delete_table('djeuscan_versionlog') - - # Deleting model 'EuscanResult' - db.delete_table('djeuscan_euscanresult') - - # Deleting model 'Log' - db.delete_table('djeuscan_log') - - # Deleting model 'WorldLog' - db.delete_table('djeuscan_worldlog') - - # Deleting model 'CategoryLog' - db.delete_table('djeuscan_categorylog') - - # Deleting model 'HerdLog' - db.delete_table('djeuscan_herdlog') - - # Deleting model 'MaintainerLog' - db.delete_table('djeuscan_maintainerlog') - - - models = { - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py b/euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py deleted file mode 100644 index 1d0aa00..0000000 --- a/euscanwww/djeuscan/migrations/0002_auto__chg_field_package_homepage.py +++ /dev/null @@ -1,113 +0,0 @@ -# encoding: utf-8 -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Changing field 'Package.homepage' - db.alter_column('djeuscan_package', 'homepage', self.gf('django.db.models.fields.TextField')()) - - - def backwards(self, orm): - - # Changing field 'Package.homepage' - db.alter_column('djeuscan_package', 'homepage', self.gf('django.db.models.fields.CharField')(max_length=256)) - - - models = { - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py b/euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py deleted file mode 100644 index 9dfa51b..0000000 --- a/euscanwww/djeuscan/migrations/0003_auto__add_refreshpackagequery__chg_field_package_last_version_gentoo__.py +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'RefreshPackageQuery' - db.create_table('djeuscan_refreshpackagequery', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('query', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)), - ('priority', self.gf('django.db.models.fields.IntegerField')(default=0)), - )) - db.send_create_signal('djeuscan', ['RefreshPackageQuery']) - - - # Changing field 'Package.last_version_gentoo' - db.alter_column('djeuscan_package', 'last_version_gentoo_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_overlay' - db.alter_column('djeuscan_package', 'last_version_overlay_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_upstream' - db.alter_column('djeuscan_package', 'last_version_upstream_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['djeuscan.Version'])) - def backwards(self, orm): - # Deleting model 'RefreshPackageQuery' - db.delete_table('djeuscan_refreshpackagequery') - - - # Changing field 'Package.last_version_gentoo' - db.alter_column('djeuscan_package', 'last_version_gentoo_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_overlay' - db.alter_column('djeuscan_package', 'last_version_overlay_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['djeuscan.Version'])) - - # Changing field 'Package.last_version_upstream' - db.alter_column('djeuscan_package', 'last_version_upstream_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['djeuscan.Version'])) - models = { - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py b/euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py deleted file mode 100644 index 888fefa..0000000 --- a/euscanwww/djeuscan/migrations/0004_auto__add_categoryassociation__add_unique_categoryassociation_user_cat.py +++ /dev/null @@ -1,238 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'CategoryAssociation' - db.create_table('djeuscan_categoryassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['CategoryAssociation']) - - # Adding unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.create_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Adding model 'PackageAssociation' - db.create_table('djeuscan_packageassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - )) - db.send_create_signal('djeuscan', ['PackageAssociation']) - - # Adding unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.create_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Adding model 'HerdAssociation' - db.create_table('djeuscan_herdassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('herd', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Herd'])), - )) - db.send_create_signal('djeuscan', ['HerdAssociation']) - - # Adding unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.create_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Adding model 'MaintainerAssociation' - db.create_table('djeuscan_maintainerassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Maintainer'])), - )) - db.send_create_signal('djeuscan', ['MaintainerAssociation']) - - # Adding unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.create_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - def backwards(self, orm): - # Removing unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.delete_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - # Removing unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.delete_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Removing unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.delete_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Removing unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.delete_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Deleting model 'CategoryAssociation' - db.delete_table('djeuscan_categoryassociation') - - # Deleting model 'PackageAssociation' - db.delete_table('djeuscan_packageassociation') - - # Deleting model 'HerdAssociation' - db.delete_table('djeuscan_herdassociation') - - # Deleting model 'MaintainerAssociation' - db.delete_table('djeuscan_maintainerassociation') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py b/euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py deleted file mode 100644 index 64eda3c..0000000 --- a/euscanwww/djeuscan/migrations/0005_auto__add_field_version_version_type__add_field_version_handler__add_f.py +++ /dev/null @@ -1,197 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Version.version_type' - db.add_column('djeuscan_version', 'version_type', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - # Adding field 'Version.handler' - db.add_column('djeuscan_version', 'handler', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - # Adding field 'Version.confidence' - db.add_column('djeuscan_version', 'confidence', - self.gf('django.db.models.fields.IntegerField')(default=0), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Version.version_type' - db.delete_column('djeuscan_version', 'version_type') - - # Deleting field 'Version.handler' - db.delete_column('djeuscan_version', 'handler') - - # Deleting field 'Version.confidence' - db.delete_column('djeuscan_version', 'confidence') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py b/euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py deleted file mode 100644 index 9e4bcce..0000000 --- a/euscanwww/djeuscan/migrations/0006_auto__add_field_euscanresult_scan_time__add_field_euscanresult_ebuild.py +++ /dev/null @@ -1,191 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'EuscanResult.scan_time' - db.add_column('djeuscan_euscanresult', 'scan_time', - self.gf('django.db.models.fields.FloatField')(null=True, blank=True), - keep_default=False) - - # Adding field 'EuscanResult.ebuild' - db.add_column('djeuscan_euscanresult', 'ebuild', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'EuscanResult.scan_time' - db.delete_column('djeuscan_euscanresult', 'scan_time') - - # Deleting field 'EuscanResult.ebuild' - db.delete_column('djeuscan_euscanresult', 'ebuild') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'query': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py b/euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py deleted file mode 100644 index 1f210c1..0000000 --- a/euscanwww/djeuscan/migrations/0007_auto__del_field_refreshpackagequery_query__add_field_refreshpackageque.py +++ /dev/null @@ -1,191 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'RefreshPackageQuery.query' - db.delete_column('djeuscan_refreshpackagequery', 'query') - - # Adding field 'RefreshPackageQuery.package' - db.add_column('djeuscan_refreshpackagequery', 'package', - self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package']), - keep_default=False) - - def backwards(self, orm): - # Adding field 'RefreshPackageQuery.query' - db.add_column('djeuscan_refreshpackagequery', 'query', - self.gf('django.db.models.fields.CharField')(default=None, max_length=256, unique=True), - keep_default=False) - - # Deleting field 'RefreshPackageQuery.package' - db.delete_column('djeuscan_refreshpackagequery', 'package_id') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py b/euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py deleted file mode 100644 index db2bce4..0000000 --- a/euscanwww/djeuscan/migrations/0008_auto__add_problemreport.py +++ /dev/null @@ -1,198 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'ProblemReport' - db.create_table('djeuscan_problemreport', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - ('version', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Version'], null=True, blank=True)), - ('subject', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('message', self.gf('django.db.models.fields.TextField')()), - ('datetime', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), - )) - db.send_create_signal('djeuscan', ['ProblemReport']) - - def backwards(self, orm): - # Deleting model 'ProblemReport' - db.delete_table('djeuscan_problemreport') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py b/euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py deleted file mode 100644 index 6ebd84c..0000000 --- a/euscanwww/djeuscan/migrations/0009_auto__add_overlayassociation__add_unique_overlayassociation_user_overl.py +++ /dev/null @@ -1,207 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'OverlayAssociation' - db.create_table('djeuscan_overlayassociation', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('overlay', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['OverlayAssociation']) - - # Adding unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.create_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - def backwards(self, orm): - # Removing unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.delete_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - # Deleting model 'OverlayAssociation' - db.delete_table('djeuscan_overlayassociation') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py b/euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py deleted file mode 100644 index 100e7a3..0000000 --- a/euscanwww/djeuscan/migrations/0010_auto__add_field_version_ebuild_path__add_field_version_metadata_path.py +++ /dev/null @@ -1,208 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Version.ebuild_path' - db.add_column('djeuscan_version', 'ebuild_path', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - # Adding field 'Version.metadata_path' - db.add_column('djeuscan_version', 'metadata_path', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Version.ebuild_path' - db.delete_column('djeuscan_version', 'ebuild_path') - - # Deleting field 'Version.metadata_path' - db.delete_column('djeuscan_version', 'metadata_path') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py b/euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py deleted file mode 100644 index eb0da22..0000000 --- a/euscanwww/djeuscan/migrations/0011_auto__del_field_version_version_type__add_field_version_vtype.py +++ /dev/null @@ -1,208 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'Version.version_type' - db.delete_column('djeuscan_version', 'version_type') - - # Adding field 'Version.vtype' - db.add_column('djeuscan_version', 'vtype', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - def backwards(self, orm): - # Adding field 'Version.version_type' - db.add_column('djeuscan_version', 'version_type', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - # Deleting field 'Version.vtype' - db.delete_column('djeuscan_version', 'vtype') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py b/euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py deleted file mode 100644 index 920a6d0..0000000 --- a/euscanwww/djeuscan/migrations/0012_auto__add_field_versionlog_vtype.py +++ /dev/null @@ -1,201 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'VersionLog.vtype' - db.add_column('djeuscan_versionlog', 'vtype', - self.gf('django.db.models.fields.CharField')(default='', max_length=128, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'VersionLog.vtype' - db.delete_column('djeuscan_versionlog', 'vtype') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0013_auto.py b/euscanwww/djeuscan/migrations/0013_auto.py deleted file mode 100644 index 5d2a1ee..0000000 --- a/euscanwww/djeuscan/migrations/0013_auto.py +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding M2M table for field maintainers on 'Herd' - db.create_table('djeuscan_herd_maintainers', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('herd', models.ForeignKey(orm['djeuscan.herd'], null=False)), - ('maintainer', models.ForeignKey(orm['djeuscan.maintainer'], null=False)) - )) - db.create_unique('djeuscan_herd_maintainers', ['herd_id', 'maintainer_id']) - - def backwards(self, orm): - # Removing M2M table for field maintainers on 'Herd' - db.delete_table('djeuscan_herd_maintainers') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0014_auto.py b/euscanwww/djeuscan/migrations/0014_auto.py deleted file mode 100644 index 74cc7c3..0000000 --- a/euscanwww/djeuscan/migrations/0014_auto.py +++ /dev/null @@ -1,206 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding M2M table for field users on 'RefreshPackageQuery' - db.create_table('djeuscan_refreshpackagequery_users', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('refreshpackagequery', models.ForeignKey(orm['djeuscan.refreshpackagequery'], null=False)), - ('user', models.ForeignKey(orm['auth.user'], null=False)) - )) - db.create_unique('djeuscan_refreshpackagequery_users', ['refreshpackagequery_id', 'user_id']) - - def backwards(self, orm): - # Removing M2M table for field users on 'RefreshPackageQuery' - db.delete_table('djeuscan_refreshpackagequery_users') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py b/euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py deleted file mode 100644 index c25d411..0000000 --- a/euscanwww/djeuscan/migrations/0015_initial_celery_periodictasks.py +++ /dev/null @@ -1,324 +0,0 @@ -# -*- coding: utf-8 -*- -from south.v2 import DataMigration - - -class Migration(DataMigration): - - depends_on = ( - ("djcelery", "0001_initial"), - ) - - def forwards(self, orm): - every_day = orm["djcelery.CrontabSchedule"].objects.create( - minute="00", - hour="01", - day_of_week="*", - day_of_month="*", - month_of_year="*" - ) - every_week = orm["djcelery.CrontabSchedule"].objects.create( - minute="00", - hour="03", - day_of_week="1", - day_of_month="*", - month_of_year="*" - ) - every_month = orm["djcelery.CrontabSchedule"].objects.create( - minute="00", - hour="05", - day_of_month="1", - month_of_year="*" - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Daily portage update", - task="djeuscan.tasks.update_portage", - crontab=every_day - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Weekly upstream update", - task="djeuscan.tasks.update_upstream", - crontab=every_week - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Weekly emails", - task="djeuscan.tasks.send_weekly_email", - crontab=every_week - ) - orm["djcelery.PeriodicTask"].objects.create( - name="Monthly emails", - task="djeuscan.tasks.send_monthly_email", - crontab=every_month - ) - - def backwards(self, orm): - orm["djcelery.CrontabSchedule"].objects.all().delete() - orm["djcelery.PeriodicTask"].objects.all().delete() - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djcelery.crontabschedule': { - 'Meta': {'object_name': 'CrontabSchedule'}, - 'day_of_month': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'day_of_week': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'hour': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'minute': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}), - 'month_of_year': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}) - }, - 'djcelery.intervalschedule': { - 'Meta': {'object_name': 'IntervalSchedule'}, - 'every': ('django.db.models.fields.IntegerField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'period': ('django.db.models.fields.CharField', [], {'max_length': '24'}) - }, - 'djcelery.periodictask': { - 'Meta': {'object_name': 'PeriodicTask'}, - 'args': ('django.db.models.fields.TextField', [], {'default': "'[]'", 'blank': 'True'}), - 'crontab': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.CrontabSchedule']", 'null': 'True', 'blank': 'True'}), - 'date_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'exchange': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'interval': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.IntervalSchedule']", 'null': 'True', 'blank': 'True'}), - 'kwargs': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), - 'last_run_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), - 'queue': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'routing_key': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}), - 'task': ('django.db.models.fields.CharField', [], {'max_length': '200'}), - 'total_run_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) - }, - 'djcelery.periodictasks': { - 'Meta': {'object_name': 'PeriodicTasks'}, - 'ident': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'unique': 'True', 'primary_key': 'True'}), - 'last_update': ('django.db.models.fields.DateTimeField', [], {}) - }, - 'djcelery.taskmeta': { - 'Meta': {'object_name': 'TaskMeta', 'db_table': "'celery_taskmeta'"}, - 'date_done': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'meta': ('djcelery.picklefield.PickledObjectField', [], {'default': 'None', 'null': 'True'}), - 'result': ('djcelery.picklefield.PickledObjectField', [], {'default': 'None', 'null': 'True'}), - 'status': ('django.db.models.fields.CharField', [], {'default': "'PENDING'", 'max_length': '50'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djcelery.tasksetmeta': { - 'Meta': {'object_name': 'TaskSetMeta', 'db_table': "'celery_tasksetmeta'"}, - 'date_done': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), - 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'result': ('djcelery.picklefield.PickledObjectField', [], {}), - 'taskset_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}) - }, - 'djcelery.taskstate': { - 'Meta': {'ordering': "['-tstamp']", 'object_name': 'TaskState'}, - 'args': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'eta': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}), - 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}), - 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'kwargs': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'db_index': 'True'}), - 'result': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'retries': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'runtime': ('django.db.models.fields.FloatField', [], {'null': 'True'}), - 'state': ('django.db.models.fields.CharField', [], {'max_length': '64', 'db_index': 'True'}), - 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '36'}), - 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True'}), - 'tstamp': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), - 'worker': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.WorkerState']", 'null': 'True'}) - }, - 'djcelery.workerstate': { - 'Meta': {'ordering': "['-last_heartbeat']", 'object_name': 'WorkerState'}, - 'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_heartbeat': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_index': 'True'}) - }, - 'djeuscan.categoryassociation': { - 'Meta': {'unique_together': "(['user', 'category'],)", 'object_name': 'CategoryAssociation'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdassociation': { - 'Meta': {'unique_together': "(['user', 'herd'],)", 'object_name': 'HerdAssociation'}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerassociation': { - 'Meta': {'unique_together': "(['user', 'maintainer'],)", 'object_name': 'MaintainerAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlayassociation': { - 'Meta': {'unique_together': "(['user', 'overlay'],)", 'object_name': 'OverlayAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.packageassociation': { - 'Meta': {'unique_together': "(['user', 'package'],)", 'object_name': 'PackageAssociation'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djcelery', 'djeuscan'] - symmetrical = True diff --git a/euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py b/euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py deleted file mode 100644 index b4fe300..0000000 --- a/euscanwww/djeuscan/migrations/0016_auto__del_maintainerassociation__del_unique_maintainerassociation_user.py +++ /dev/null @@ -1,355 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Removing unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.delete_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Removing unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.delete_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - # Removing unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.delete_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Removing unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.delete_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Removing unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.delete_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - # Deleting model 'MaintainerAssociation' - db.delete_table('djeuscan_maintainerassociation') - - # Deleting model 'PackageAssociation' - db.delete_table('djeuscan_packageassociation') - - # Deleting model 'HerdAssociation' - db.delete_table('djeuscan_herdassociation') - - # Deleting model 'OverlayAssociation' - db.delete_table('djeuscan_overlayassociation') - - # Deleting model 'CategoryAssociation' - db.delete_table('djeuscan_categoryassociation') - - # Adding model 'UserProfile' - db.create_table('djeuscan_userprofile', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)), - )) - db.send_create_signal('djeuscan', ['UserProfile']) - - # Adding M2M table for field herds on 'UserProfile' - db.create_table('djeuscan_userprofile_herds', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('herd', models.ForeignKey(orm['djeuscan.herd'], null=False)) - )) - db.create_unique('djeuscan_userprofile_herds', ['userprofile_id', 'herd_id']) - - # Adding M2M table for field maintainers on 'UserProfile' - db.create_table('djeuscan_userprofile_maintainers', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('maintainer', models.ForeignKey(orm['djeuscan.maintainer'], null=False)) - )) - db.create_unique('djeuscan_userprofile_maintainers', ['userprofile_id', 'maintainer_id']) - - # Adding M2M table for field packages on 'UserProfile' - db.create_table('djeuscan_userprofile_packages', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('package', models.ForeignKey(orm['djeuscan.package'], null=False)) - )) - db.create_unique('djeuscan_userprofile_packages', ['userprofile_id', 'package_id']) - - # Adding M2M table for field categories on 'UserProfile' - db.create_table('djeuscan_userprofile_categories', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('category', models.ForeignKey(orm['djeuscan.category'], null=False)) - )) - db.create_unique('djeuscan_userprofile_categories', ['userprofile_id', 'category_id']) - - # Adding M2M table for field overlays on 'UserProfile' - db.create_table('djeuscan_userprofile_overlays', ( - ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), - ('userprofile', models.ForeignKey(orm['djeuscan.userprofile'], null=False)), - ('overlay', models.ForeignKey(orm['djeuscan.overlay'], null=False)) - )) - db.create_unique('djeuscan_userprofile_overlays', ['userprofile_id', 'overlay_id']) - - # Adding model 'Category' - db.create_table('djeuscan_category', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['Category']) - - # Adding model 'Overlay' - db.create_table('djeuscan_overlay', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['Overlay']) - - def backwards(self, orm): - # Adding model 'MaintainerAssociation' - db.create_table('djeuscan_maintainerassociation', ( - ('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Maintainer'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - )) - db.send_create_signal('djeuscan', ['MaintainerAssociation']) - - # Adding unique constraint on 'MaintainerAssociation', fields ['user', 'maintainer'] - db.create_unique('djeuscan_maintainerassociation', ['user_id', 'maintainer_id']) - - # Adding model 'PackageAssociation' - db.create_table('djeuscan_packageassociation', ( - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('package', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Package'])), - )) - db.send_create_signal('djeuscan', ['PackageAssociation']) - - # Adding unique constraint on 'PackageAssociation', fields ['user', 'package'] - db.create_unique('djeuscan_packageassociation', ['user_id', 'package_id']) - - # Adding model 'HerdAssociation' - db.create_table('djeuscan_herdassociation', ( - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('herd', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djeuscan.Herd'])), - )) - db.send_create_signal('djeuscan', ['HerdAssociation']) - - # Adding unique constraint on 'HerdAssociation', fields ['user', 'herd'] - db.create_unique('djeuscan_herdassociation', ['user_id', 'herd_id']) - - # Adding model 'OverlayAssociation' - db.create_table('djeuscan_overlayassociation', ( - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('overlay', self.gf('django.db.models.fields.CharField')(max_length=128)), - )) - db.send_create_signal('djeuscan', ['OverlayAssociation']) - - # Adding unique constraint on 'OverlayAssociation', fields ['user', 'overlay'] - db.create_unique('djeuscan_overlayassociation', ['user_id', 'overlay']) - - # Adding model 'CategoryAssociation' - db.create_table('djeuscan_categoryassociation', ( - ('category', self.gf('django.db.models.fields.CharField')(max_length=128)), - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), - )) - db.send_create_signal('djeuscan', ['CategoryAssociation']) - - # Adding unique constraint on 'CategoryAssociation', fields ['user', 'category'] - db.create_unique('djeuscan_categoryassociation', ['user_id', 'category']) - - # Deleting model 'UserProfile' - db.delete_table('djeuscan_userprofile') - - # Removing M2M table for field herds on 'UserProfile' - db.delete_table('djeuscan_userprofile_herds') - - # Removing M2M table for field maintainers on 'UserProfile' - db.delete_table('djeuscan_userprofile_maintainers') - - # Removing M2M table for field packages on 'UserProfile' - db.delete_table('djeuscan_userprofile_packages') - - # Removing M2M table for field categories on 'UserProfile' - db.delete_table('djeuscan_userprofile_categories') - - # Removing M2M table for field overlays on 'UserProfile' - db.delete_table('djeuscan_userprofile_overlays') - - # Deleting model 'Category' - db.delete_table('djeuscan_category') - - # Deleting model 'Overlay' - db.delete_table('djeuscan_overlay') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py b/euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py deleted file mode 100644 index 7d95034..0000000 --- a/euscanwww/djeuscan/migrations/0017_auto__add_unique_overlay_name__add_unique_category_name.py +++ /dev/null @@ -1,197 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding unique constraint on 'Overlay', fields ['name'] - db.create_unique('djeuscan_overlay', ['name']) - - # Adding unique constraint on 'Category', fields ['name'] - db.create_unique('djeuscan_category', ['name']) - - def backwards(self, orm): - # Removing unique constraint on 'Category', fields ['name'] - db.delete_unique('djeuscan_category', ['name']) - - # Removing unique constraint on 'Overlay', fields ['name'] - db.delete_unique('djeuscan_overlay', ['name']) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py b/euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py deleted file mode 100644 index 63987c5..0000000 --- a/euscanwww/djeuscan/migrations/0018_auto__add_field_userprofile_upstream_info__add_field_userprofile_porta.py +++ /dev/null @@ -1,203 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'UserProfile.upstream_info' - db.add_column('djeuscan_userprofile', 'upstream_info', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.portage_info' - db.add_column('djeuscan_userprofile', 'portage_info', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'UserProfile.upstream_info' - db.delete_column('djeuscan_userprofile', 'upstream_info') - - # Deleting field 'UserProfile.portage_info' - db.delete_column('djeuscan_userprofile', 'portage_info') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py b/euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py deleted file mode 100644 index 7aa2289..0000000 --- a/euscanwww/djeuscan/migrations/0019_auto__del_field_userprofile_portage_info__del_field_userprofile_upstre.py +++ /dev/null @@ -1,282 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'UserProfile.portage_info' - db.delete_column('djeuscan_userprofile', 'portage_info') - - # Deleting field 'UserProfile.upstream_info' - db.delete_column('djeuscan_userprofile', 'upstream_info') - - # Adding field 'UserProfile.feed_upstream_info' - db.add_column('djeuscan_userprofile', 'feed_upstream_info', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.feed_portage_info' - db.add_column('djeuscan_userprofile', 'feed_portage_info', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.feed_show_adds' - db.add_column('djeuscan_userprofile', 'feed_show_adds', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.feed_show_removals' - db.add_column('djeuscan_userprofile', 'feed_show_removals', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.feed_ignore_pre' - db.add_column('djeuscan_userprofile', 'feed_ignore_pre', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.feed_ignore_pre_if_stable' - db.add_column('djeuscan_userprofile', 'feed_ignore_pre_if_stable', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.email_activated' - db.add_column('djeuscan_userprofile', 'email_activated', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Adding field 'UserProfile.email_ignore_pre' - db.add_column('djeuscan_userprofile', 'email_ignore_pre', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.email_ignore_pre_if_stable' - db.add_column('djeuscan_userprofile', 'email_ignore_pre_if_stable', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - def backwards(self, orm): - # Adding field 'UserProfile.portage_info' - db.add_column('djeuscan_userprofile', 'portage_info', - self.gf('django.db.models.fields.BooleanField')(default=False), - keep_default=False) - - # Adding field 'UserProfile.upstream_info' - db.add_column('djeuscan_userprofile', 'upstream_info', - self.gf('django.db.models.fields.BooleanField')(default=True), - keep_default=False) - - # Deleting field 'UserProfile.feed_upstream_info' - db.delete_column('djeuscan_userprofile', 'feed_upstream_info') - - # Deleting field 'UserProfile.feed_portage_info' - db.delete_column('djeuscan_userprofile', 'feed_portage_info') - - # Deleting field 'UserProfile.feed_show_adds' - db.delete_column('djeuscan_userprofile', 'feed_show_adds') - - # Deleting field 'UserProfile.feed_show_removals' - db.delete_column('djeuscan_userprofile', 'feed_show_removals') - - # Deleting field 'UserProfile.feed_ignore_pre' - db.delete_column('djeuscan_userprofile', 'feed_ignore_pre') - - # Deleting field 'UserProfile.feed_ignore_pre_if_stable' - db.delete_column('djeuscan_userprofile', 'feed_ignore_pre_if_stable') - - # Deleting field 'UserProfile.email_activated' - db.delete_column('djeuscan_userprofile', 'email_activated') - - # Deleting field 'UserProfile.email_ignore_pre' - db.delete_column('djeuscan_userprofile', 'email_ignore_pre') - - # Deleting field 'UserProfile.email_ignore_pre_if_stable' - db.delete_column('djeuscan_userprofile', 'email_ignore_pre_if_stable') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py b/euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py deleted file mode 100644 index c0f1525..0000000 --- a/euscanwww/djeuscan/migrations/0020_auto__add_field_userprofile_email_every.py +++ /dev/null @@ -1,203 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'UserProfile.email_every' - db.add_column('djeuscan_userprofile', 'email_every', - self.gf('django.db.models.fields.IntegerField')(default=1), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'UserProfile.email_every' - db.delete_column('djeuscan_userprofile', 'email_every') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_every': ('django.db.models.fields.IntegerField', [], {'default': '1'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py b/euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py deleted file mode 100644 index 5a2e9dd..0000000 --- a/euscanwww/djeuscan/migrations/0021_auto__add_field_userprofile_last_email.py +++ /dev/null @@ -1,204 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'UserProfile.last_email' - db.add_column('djeuscan_userprofile', 'last_email', - self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.datetime(2012, 8, 11, 0, 0), blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'UserProfile.last_email' - db.delete_column('djeuscan_userprofile', 'last_email') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_every': ('django.db.models.fields.IntegerField', [], {'default': '1'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_email': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py b/euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py deleted file mode 100644 index e2a401b..0000000 --- a/euscanwww/djeuscan/migrations/0022_auto__del_userprofile.py +++ /dev/null @@ -1,179 +0,0 @@ -# -*- coding: utf-8 -*- -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - depends_on = ( - ('euscan_accounts', '0001_initial'), - ) - - def forwards(self, orm): - pass - - def backwards(self, orm): - pass - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] diff --git a/euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py b/euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py deleted file mode 100644 index 456ec7f..0000000 --- a/euscanwww/djeuscan/migrations/0023_auto__del_unique_version_slot_overlay_revision_version_package__add_un.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Removing unique constraint on 'Version', fields ['slot', 'overlay', 'revision', 'version', 'package'] - db.delete_unique('djeuscan_version', ['slot', 'overlay', 'revision', 'version', 'package_id']) - - # Adding unique constraint on 'Version', fields ['overlay', 'revision', 'version', 'package'] - db.create_unique('djeuscan_version', ['overlay', 'revision', 'version', 'package_id']) - - def backwards(self, orm): - # Removing unique constraint on 'Version', fields ['overlay', 'revision', 'version', 'package'] - db.delete_unique('djeuscan_version', ['overlay', 'revision', 'version', 'package_id']) - - # Adding unique constraint on 'Version', fields ['slot', 'overlay', 'revision', 'version', 'package'] - db.create_unique('djeuscan_version', ['slot', 'overlay', 'revision', 'version', 'package_id']) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0024_add_index_handler.py b/euscanwww/djeuscan/migrations/0024_add_index_handler.py deleted file mode 100644 index 7b4b0b3..0000000 --- a/euscanwww/djeuscan/migrations/0024_add_index_handler.py +++ /dev/null @@ -1,183 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding index on 'Version', fields ['handler'] - db.create_index('djeuscan_version', ['handler']) - - - def backwards(self, orm): - # Removing index on 'Version', fields ['handler'] - db.delete_index('djeuscan_version', ['handler']) - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0024_auto.py b/euscanwww/djeuscan/migrations/0024_auto.py deleted file mode 100644 index 02a81f6..0000000 --- a/euscanwww/djeuscan/migrations/0024_auto.py +++ /dev/null @@ -1,181 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding index on 'Version', fields ['handler'] - db.create_index('djeuscan_version', ['handler']) - - def backwards(self, orm): - # Removing index on 'Version', fields ['handler'] - db.delete_index('djeuscan_version', ['handler']) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py b/euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py deleted file mode 100644 index 8416130..0000000 --- a/euscanwww/djeuscan/migrations/0025_auto__del_field_version_alive.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'Version.alive' - db.delete_column('djeuscan_version', 'alive') - - - def backwards(self, orm): - # Adding field 'Version.alive' - db.add_column('djeuscan_version', 'alive', - self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True), - keep_default=False) - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py b/euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py deleted file mode 100644 index 7100301..0000000 --- a/euscanwww/djeuscan/migrations/0026_auto__add_field_category_description__add_field_overlay_description__a.py +++ /dev/null @@ -1,201 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Category.description' - db.add_column('djeuscan_category', 'description', - self.gf('django.db.models.fields.TextField')(default='', blank=True), - keep_default=False) - - # Adding field 'Overlay.description' - db.add_column('djeuscan_overlay', 'description', - self.gf('django.db.models.fields.TextField')(default='', blank=True), - keep_default=False) - - # Adding field 'Overlay.homepage' - db.add_column('djeuscan_overlay', 'homepage', - self.gf('django.db.models.fields.TextField')(default='', blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Category.description' - db.delete_column('djeuscan_category', 'description') - - # Deleting field 'Overlay.description' - db.delete_column('djeuscan_overlay', 'description') - - # Deleting field 'Overlay.homepage' - db.delete_column('djeuscan_overlay', 'homepage') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py b/euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py deleted file mode 100644 index e3d83aa..0000000 --- a/euscanwww/djeuscan/migrations/0027_auto__add_field_overlay_overlay_path.py +++ /dev/null @@ -1,186 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Overlay.overlay_path' - db.add_column('djeuscan_overlay', 'overlay_path', - self.gf('django.db.models.fields.CharField')(default='', max_length=256, blank=True), - keep_default=False) - - def backwards(self, orm): - # Deleting field 'Overlay.overlay_path' - db.delete_column('djeuscan_overlay', 'overlay_path') - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py b/euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py deleted file mode 100644 index 594b8ac..0000000 --- a/euscanwww/djeuscan/migrations/0028_auto__add_field_version_stabilization_candidate.py +++ /dev/null @@ -1,189 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding field 'Version.stabilization_candidate' - db.add_column('djeuscan_version', 'stabilization_candidate', - self.gf('django.db.models.fields.DateField')(default=None, null=True, blank=True), - keep_default=False) - - - def backwards(self, orm): - # Deleting field 'Version.stabilization_candidate' - db.delete_column('djeuscan_version', 'stabilization_candidate') - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0029_auto.py b/euscanwww/djeuscan/migrations/0029_auto.py deleted file mode 100644 index 0b873aa..0000000 --- a/euscanwww/djeuscan/migrations/0029_auto.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding index on 'Version', fields ['stabilization_candidate'] - db.create_index('djeuscan_version', ['stabilization_candidate']) - - - def backwards(self, orm): - # Removing index on 'Version', fields ['stabilization_candidate'] - db.delete_index('djeuscan_version', ['stabilization_candidate']) - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py b/euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py deleted file mode 100644 index cd946b6..0000000 --- a/euscanwww/djeuscan/migrations/0030_auto__chg_field_category_description__chg_field_overlay_homepage__chg_.py +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Changing field 'Category.description' - db.alter_column('djeuscan_category', 'description', self.gf('django.db.models.fields.TextField')(null=True)) - - # Changing field 'Overlay.homepage' - db.alter_column('djeuscan_overlay', 'homepage', self.gf('django.db.models.fields.TextField')(null=True)) - - # Changing field 'Overlay.description' - db.alter_column('djeuscan_overlay', 'description', self.gf('django.db.models.fields.TextField')(null=True)) - - # Changing field 'Overlay.overlay_path' - db.alter_column('djeuscan_overlay', 'overlay_path', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)) - - def backwards(self, orm): - - # Changing field 'Category.description' - db.alter_column('djeuscan_category', 'description', self.gf('django.db.models.fields.TextField')(default='')) - - # Changing field 'Overlay.homepage' - db.alter_column('djeuscan_overlay', 'homepage', self.gf('django.db.models.fields.TextField')(default='')) - - # Changing field 'Overlay.description' - db.alter_column('djeuscan_overlay', 'description', self.gf('django.db.models.fields.TextField')(default='')) - - # Changing field 'Overlay.overlay_path' - db.alter_column('djeuscan_overlay', 'overlay_path', self.gf('django.db.models.fields.CharField')(default='', max_length=256)) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py b/euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py deleted file mode 100644 index 1c39724..0000000 --- a/euscanwww/djeuscan/migrations/0031_auto__chg_field_version_metadata_path.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Changing field 'Version.metadata_path' - db.alter_column('djeuscan_version', 'metadata_path', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)) - - def backwards(self, orm): - - # Changing field 'Version.metadata_path' - db.alter_column('djeuscan_version', 'metadata_path', self.gf('django.db.models.fields.CharField')(default='', max_length=256)) - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.categorylog': { - 'Meta': {'object_name': 'CategoryLog', '_ormbases': ['djeuscan.Log']}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.euscanresult': { - 'Meta': {'object_name': 'EuscanResult'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'ebuild': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'result': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'scan_time': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.herdlog': { - 'Meta': {'object_name': 'HerdLog', '_ormbases': ['djeuscan.Log']}, - 'herd': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Herd']"}), - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - }, - 'djeuscan.log': { - 'Meta': {'object_name': 'Log'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'n_packages_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_outdated': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packages_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_gentoo': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions_upstream': ('django.db.models.fields.IntegerField', [], {'default': '0'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.maintainerlog': { - 'Meta': {'object_name': 'MaintainerLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}), - 'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Maintainer']"}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'overlay_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.problemreport': { - 'Meta': {'object_name': 'ProblemReport'}, - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'message': ('django.db.models.fields.TextField', [], {}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'subject': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Version']", 'null': 'True', 'blank': 'True'}) - }, - 'djeuscan.refreshpackagequery': { - 'Meta': {'object_name': 'RefreshPackageQuery'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'priority': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'users': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'stabilization_candidate': ('django.db.models.fields.DateField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.versionlog': { - 'Meta': {'object_name': 'VersionLog'}, - 'action': ('django.db.models.fields.IntegerField', [], {}), - 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'djeuscan.worldlog': { - 'Meta': {'object_name': 'WorldLog', '_ormbases': ['djeuscan.Log']}, - 'log_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['djeuscan.Log']", 'unique': 'True', 'primary_key': 'True'}) - } - } - - complete_apps = ['djeuscan'] \ No newline at end of file diff --git a/euscanwww/djeuscan/migrations/__init__.py b/euscanwww/djeuscan/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/models.py b/euscanwww/djeuscan/models.py deleted file mode 100644 index e03d798..0000000 --- a/euscanwww/djeuscan/models.py +++ /dev/null @@ -1,384 +0,0 @@ -import json - -from django.db import models -from django.core.validators import RegexValidator, validate_email, URLValidator -from django.core.exceptions import ValidationError - -from django.contrib.auth.models import User - -from djeuscan.managers import PackageManager, VersionLogManager, \ - EuscanResultManager - - -validate_category = RegexValidator("^(?:\w+?-\w+?)|virtual$") -validate_name = RegexValidator("^\S+?$") -validate_revision = RegexValidator("^r\d+?$") -validate_url = URLValidator() - - -class Herd(models.Model): - """ - A herd is a collection of packages - """ - - herd = models.CharField(max_length=128, unique=True, - validators=[validate_name]) - email = models.CharField(max_length=128, blank=True, null=True, - validators=[validate_email]) - maintainers = models.ManyToManyField("Maintainer") - - def __unicode__(self): - if self.email: - return '%s <%s>' % (self.herd, self.email) - return self.herd - - def save(self, *args, **kwargs): - self.full_clean() - super(Herd, self).save(*args, **kwargs) - - -class Maintainer(models.Model): - """ - The person who maintains a package - """ - - name = models.CharField(max_length=128) - email = models.CharField(max_length=128, unique=True, - validators=[validate_email]) - - def __unicode__(self): - return '%s <%s>' % (self.name, self.email) - - def save(self, *args, **kwargs): - self.full_clean() - super(Maintainer, self).save(*args, **kwargs) - - -class Package(models.Model): - """ - A portage package - """ - - category = models.CharField(max_length=128, validators=[validate_category]) - name = models.CharField(max_length=128, validators=[validate_name]) - description = models.TextField(blank=True) - homepage = models.TextField(blank=True) - herds = models.ManyToManyField(Herd, blank=True) - maintainers = models.ManyToManyField(Maintainer, blank=True) - - # For performance, we keep pre-computed counters - n_versions = models.IntegerField(default=0) - n_packaged = models.IntegerField(default=0) - n_overlay = models.IntegerField(default=0) - - # And we also pre-compute last versions - last_version_gentoo = models.ForeignKey( - 'Version', blank=True, null=True, related_name="last_version_gentoo", - on_delete=models.SET_NULL - ) - last_version_overlay = models.ForeignKey( - 'Version', blank=True, null=True, related_name="last_version_overlay", - on_delete=models.SET_NULL - ) - last_version_upstream = models.ForeignKey( - 'Version', blank=True, null=True, related_name="last_version_upstream", - on_delete=models.SET_NULL - ) - - objects = PackageManager() - - class Meta: - unique_together = ['category', 'name'] - - def cp(self): - return '%s/%s' % (self.category, self.name) - - def __unicode__(self): - return self.cp() - - def save(self, *args, **kwargs): - self.full_clean() - - # Clean urls, accept only real urls - urls = [] - for url in self.homepages: - try: - validate_url(url) - except ValidationError: - pass - else: - urls.append(url) - self.homepage = " ".join(urls) - - super(Package, self).save(*args, **kwargs) - - @property - def homepages(self): - return self.homepage.split(' ') - - @property - def last_version(self): - from euscan.helpers import vercmp - - versions = [ - self.last_version_gentoo, - self.last_version_overlay, - self.last_version_upstream - ] - _cmp = lambda x, y: vercmp( - unicode(self), x.version if x else "", y.version if y else "" - ) - return sorted(versions, cmp=_cmp)[-1] - - -class Version(models.Model): - """ - Version associated to a package - """ - - package = models.ForeignKey(Package) - slot = models.CharField(max_length=128, blank=True, default="") - revision = models.CharField(max_length=128) - version = models.CharField(max_length=128) - packaged = models.BooleanField() - overlay = models.CharField(max_length=128, default='gentoo', db_index=True, - validators=[validate_name], blank=True) - urls = models.TextField(blank=True) - - vtype = models.CharField(max_length=128, blank=True) - handler = models.CharField(max_length=128, blank=True, db_index=True) - confidence = models.IntegerField(default=0) - - ebuild_path = models.CharField(blank=True, max_length=256) - metadata_path = models.CharField(null=True, blank=True, max_length=256) - - # If this is not null then the version is a stabilization candidate - stabilization_candidate = models.DateField( - blank=True, null=True, default=None, db_index=True - ) - - class Meta: - unique_together = ['package', 'revision', 'version', 'overlay'] - - @property - def tag(self): - return '%s%s%s' % ( - self.version, - "-" + self.revision if self.revision != "r0" else "", - "-" + self.overlay if self.overlay else "-upstream" - ) - - @property - def urls_list(self): - return self.urls.split() - - def cpv(self): - return '%s/%s-%s%s' % ( - self.package.category, self.package.name, self.version, - '-' + self.revision if self.revision != 'r0' else '' - ) - - def __unicode__(self): - return '%s/%s-%s%s%s [%s]' % ( - self.package.category, self.package.name, self.version, - '-' + self.revision if self.revision != 'r0' else '', - ':' + self.slot if self.slot and self.slot != '0' else '', - self.overlay or "" - ) - - def save(self, *args, **kwargs): - self.full_clean() - super(Version, self).save(*args, **kwargs) - - -class VersionLog(models.Model): - VERSION_ADDED = 1 - VERSION_REMOVED = 2 - VERSION_ACTIONS = ( - (VERSION_ADDED, 'Added'), - (VERSION_REMOVED, 'Removed') - ) - - package = models.ForeignKey(Package) - datetime = models.DateTimeField(auto_now_add=True) - slot = models.CharField(max_length=128, blank=True, default="") - revision = models.CharField(max_length=128) - version = models.CharField(max_length=128) - packaged = models.BooleanField() - overlay = models.CharField(max_length=128, default='gentoo', - validators=[validate_name], blank=True) - action = models.IntegerField(choices=VERSION_ACTIONS) - - vtype = models.CharField(max_length=128, blank=True) - - objects = VersionLogManager() - - @property - def tag(self): - return '%s%s%s' % ( - self.version, - "-" + self.revision if self.revision != "r0" else "", - "-" + self.overlay if self.overlay else "-upstream" - ) - - def __unicode__(self): - txt = '+ ' if self.action == self.VERSION_ADDED else '- ' - txt += '%s/%s-%s%s%s [%s]' % ( - self.package.category, self.package.name, self.version, - '-' + self.revision if self.revision != 'r0' else '', - ':' + self.slot if self.slot and self.slot != '0' else '', - self.overlay or "" - ) - return txt - - def save(self, *args, **kwargs): - self.full_clean() - super(VersionLog, self).save(*args, **kwargs) - - -class EuscanResult(models.Model): - package = models.ForeignKey(Package) - datetime = models.DateTimeField() - result = models.TextField(blank=True) - - scan_time = models.FloatField(null=True, blank=True) - ebuild = models.CharField(blank=True, max_length=256) - - objects = EuscanResultManager() - - class Meta: - get_latest_by = "datetime" - - def save(self, *args, **kwargs): - self.full_clean() - super(EuscanResult, self).save(*args, **kwargs) - - @property - def messages(self): - try: - result = json.loads(self.result) - except ValueError: - return self.result - - if result and self.package.cp() in result: - return result[self.package.cp()]['messages'] - else: - return "" - - def __unicode__(self): - return '[%s] %s/%s' % ( - self.datetime, self.package.category, self.package.name - ) - - -class Category(models.Model): - name = models.CharField(max_length=128, validators=[validate_category], - unique=True) - description = models.TextField(blank=True, null=True) - - class Meta: - verbose_name_plural = "categories" - - def __unicode__(self): - return self.name - - -class Overlay(models.Model): - name = models.CharField(max_length=128, validators=[validate_name], - unique=True) - description = models.TextField(blank=True, null=True) - homepage = models.TextField(blank=True, null=True) - overlay_path = models.CharField(blank=True, null=True, max_length=256) - - def __unicode__(self): - return self.name - - -class Log(models.Model): - """ - Model used for keeping data for charts - """ - - datetime = models.DateTimeField() - - # Packages up to date in the main portage tree - n_packages_gentoo = models.IntegerField(default=0) - - # Packages up to date in an overlay - n_packages_overlay = models.IntegerField(default=0) - - # Packages outdated - n_packages_outdated = models.IntegerField(default=0) - - # Versions in the main portage tree - n_versions_gentoo = models.IntegerField(default=0) - - # Versions in overlays - n_versions_overlay = models.IntegerField(default=0) - - # Upstream versions, not in the main tree or overlays - n_versions_upstream = models.IntegerField(default=0) - - def __unicode__(self): - return u'[%d:%d:%d] [%d:%d:%d]' % ( - self.n_packages_gentoo, self.n_packages_overlay, - self.n_packages_outdated, self.n_versions_gentoo, - self.n_versions_overlay, self.n_versions_upstream - ) - - def save(self, *args, **kwargs): - self.full_clean() - super(Log, self).save(*args, **kwargs) - - -class WorldLog(Log): - def __unicode__(self): - return u'world ' + Log.__unicode__(self) - - -class CategoryLog(Log): - category = models.CharField(max_length=128, validators=[validate_category]) - - def __unicode__(self): - return u'%s %s' % (self.category, Log.__unicode__(self)) - - -class HerdLog(Log): - herd = models.ForeignKey(Herd) - - def __unicode__(self): - return u'%s %s' % (self.herd, Log.__unicode__(self)) - - -class MaintainerLog(Log): - maintainer = models.ForeignKey(Maintainer) - - def __unicode__(self): - return u'%s %s' % (self.maintainer, Log.__unicode__(self)) - - -class RefreshPackageQuery(models.Model): - package = models.ForeignKey(Package) - priority = models.IntegerField(default=0) - users = models.ManyToManyField(User) - - @property - def position(self): - ordered = RefreshPackageQuery.objects.all().order_by("-priority") - for pos, obj in enumerate(ordered, start=1): - if obj == self: - return pos - - def __unicode__(self): - return u'[%d] %s' % (self.priority, self.package) - - -class ProblemReport(models.Model): - package = models.ForeignKey(Package) - version = models.ForeignKey(Version, null=True, blank=True) - subject = models.CharField(max_length=128) - message = models.TextField() - datetime = models.DateTimeField(auto_now_add=True) - - def __unicode__(self): - return u"[%s] %s" % (self.datetime, self.package) diff --git a/euscanwww/djeuscan/processing/__init__.py b/euscanwww/djeuscan/processing/__init__.py deleted file mode 100644 index f1a00c6..0000000 --- a/euscanwww/djeuscan/processing/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -class FakeLogger(object): - def __getattr__(self, key): - return lambda *x, **y: None - - -def set_verbosity_level(logger, verbosity): - import logging - - try: - verbosity = int(verbosity) - except (ValueError, TypeError): - return logger - - levels = { - 0: logging.DEBUG, - 1: logging.INFO, - 2: logging.WARNING, - 3: logging.ERROR, - 4: logging.CRITICAL - } - - if verbosity < 0: - verbosity = 0 - - if verbosity > 4: - verbosity = 4 - - logger.setLevel(levels[verbosity]) - - return logger diff --git a/euscanwww/djeuscan/processing/misc/__init__.py b/euscanwww/djeuscan/processing/misc/__init__.py deleted file mode 100644 index dc2bd59..0000000 --- a/euscanwww/djeuscan/processing/misc/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -__all__ = ["regen_rrds", "update_counters", "update_portage_trees", "stabilization_candidates"] - -from regen_rrds import regen_rrds -from update_counters import update_counters -from update_portage_trees import update_portage_trees -from stabilization_candidates import stabilization_candidates \ No newline at end of file diff --git a/euscanwww/djeuscan/processing/misc/regen_rrds.py b/euscanwww/djeuscan/processing/misc/regen_rrds.py deleted file mode 100644 index f578aa7..0000000 --- a/euscanwww/djeuscan/processing/misc/regen_rrds.py +++ /dev/null @@ -1,31 +0,0 @@ -from djeuscan.models import HerdLog, MaintainerLog, CategoryLog, WorldLog -from djeuscan import charts - -from djeuscan.processing import FakeLogger - - -def regen_rrds(logger=None): - """ - Regenerates the rrd database - """ - - if logger is None: - logger = FakeLogger() - - logger.info("Regenering RRDs for world") - for wlog in WorldLog.objects.all(): - charts.rrd_update('world', wlog.datetime, wlog) - - logger.info("Regenering RRDs for categories") - for clog in CategoryLog.objects.all(): - charts.rrd_update('category-%s' % clog.category, - clog.datetime, clog) - - logger.info("Regenering RRDs for herds") - for hlog in HerdLog.objects.all(): - charts.rrd_update('herd-%d' % hlog.herd.id, hlog.datetime, hlog) - - logger.info("Regenering RRDs for maintainers") - for mlog in MaintainerLog.objects.all(): - charts.rrd_update('maintainer-%d' % mlog.maintainer.id, - mlog.datetime, mlog) diff --git a/euscanwww/djeuscan/processing/misc/stabilization_candidates.py b/euscanwww/djeuscan/processing/misc/stabilization_candidates.py deleted file mode 100644 index 1c8f165..0000000 --- a/euscanwww/djeuscan/processing/misc/stabilization_candidates.py +++ /dev/null @@ -1,74 +0,0 @@ -import os.path -import re -from datetime import datetime, timedelta -from gentoolkit.package import Package -from dateutil.parser import parse - -from django.db.models import Q - -from gentoolkit.errors import GentoolkitFatalError - -from djeuscan.processing import FakeLogger -from djeuscan.models import Version - - -def get_version_date(version, date_limit): - """ - Returns the datetime when the version was added to Portage, - if less than date_limit - """ - changelog_path = os.path.join( - os.path.dirname(version.ebuild_path), - "ChangeLog" - ) - if not os.path.exists(changelog_path): - return - - with open(changelog_path) as changelog: - for line in changelog: - match = re.match( - r"^\*([^\(]+) \((\d\d \w\w\w \d\d\d\d)\)\s*$", line - ) - if match: - version_date = parse(match.group(2)).date() - if version_date < date_limit: - return version_date - - -def stabilization_candidates(days_to_candidate=30, logger=None): - """ - Collect stabilization candidates - """ - - if logger is None: - logger = FakeLogger() - - date_diff = (datetime.utcnow() - timedelta(days=days_to_candidate)) - date_limit = date_diff.date() - - logger.info("Collecting stabilization candidates - date_limit=%s", - str(date_limit)) - - # Set all versions to not be stabilization_candidates - #Version.objects.update(stabilization_candidate=False) - - # For every version check if it's unstable. - # If it is then check if can be a stabilization candidate - versions = Version.objects.filter(overlay='gentoo').filter( - Q(vtype='release') | Q(vtype='p')) - for version in versions: - pkg = Package(version.cpv()) - try: - keywords = pkg.environment("KEYWORDS").split() - except GentoolkitFatalError: - logger.warning("Error while processing %s!", version) - continue - if all([x.startswith("~") for x in keywords]): - version_date = get_version_date(version, date_limit) - if version_date: - logger.info('+ [s] %s @ %s', version, version_date) - # XXX: What should we save? A flag and the date?Just the date? - version.stabilization_candidate = version_date - version.save() - - logger.info("Finished collecting stabilization candidates") diff --git a/euscanwww/djeuscan/processing/misc/update_counters.py b/euscanwww/djeuscan/processing/misc/update_counters.py deleted file mode 100644 index 392b7b5..0000000 --- a/euscanwww/djeuscan/processing/misc/update_counters.py +++ /dev/null @@ -1,174 +0,0 @@ -from django.db.transaction import commit_on_success -from django.utils import timezone - -from djeuscan.models import Package, Herd, Maintainer, Version, HerdLog, \ - MaintainerLog, CategoryLog, WorldLog -from djeuscan import charts -from djeuscan.processing import FakeLogger - -from distutils.version import StrictVersion, LooseVersion - - -def _compare_versions(version1, version2): - try: - return cmp(StrictVersion(version1), StrictVersion(version2)) - # in case of abnormal version number, fall back to LooseVersion - except ValueError: - return cmp(LooseVersion(version1), LooseVersion(version2)) - - -def _add_safe(storage, key): - if key not in storage: - storage[key] = 1 - else: - storage[key] += 1 - - -def _add_last_ver(storage, version): - key = version['package_id'] - if key not in storage: - storage[key] = version - return - if version['version'].startswith('9999'): - return - if _compare_versions(storage[key]['version'], - version['version']) < 0: - storage[key] = version - - -@commit_on_success -def update_counters(fast=False, nolog=False, logger=None): - logger = logger or FakeLogger() - - now = timezone.now() - - categories = {} - herds = {} - maintainers = {} - - wlog = None - - if not nolog: - wlog = WorldLog() - wlog.datetime = now - - for cat in Package.objects.values('category').distinct(): - clog = CategoryLog() - clog.datetime = now - clog.category = cat['category'] - categories[clog.category] = clog - - for herd in Herd.objects.all(): - hlog = HerdLog() - hlog.datetime = now - hlog.herd = herd - herds[herd.id] = hlog - - for maintainer in Maintainer.objects.all(): - mlog = MaintainerLog() - mlog.datetime = now - mlog.maintainer = maintainer - maintainers[maintainer.id] = mlog - - package_queryset = Package.objects.all() - - n_versions = {} - n_packaged = {} - n_overlay = {} - - last_versions_gentoo = {} - last_versions_overlay = {} - last_versions_upstream = {} - - if not fast: - attrs = ['id', 'version', 'overlay', 'packaged', 'package_id'] - for version in Version.objects.all().values(*attrs): - overlay, packaged = version['overlay'], version['packaged'] - package_id = version['package_id'] - - _add_safe(n_versions, package_id) - - if not packaged: - _add_last_ver(last_versions_upstream, version) - continue - if overlay == 'gentoo': - _add_safe(n_packaged, package_id) - _add_last_ver(last_versions_gentoo, version) - else: - _add_safe(n_overlay, package_id) - _add_last_ver(last_versions_overlay, version) - - for package in package_queryset.select_related('herds', 'maintainers'): - if not fast: - package.n_versions = n_versions.get(package.id, 0) - package.n_packaged = n_packaged.get(package.id, 0) - package.n_overlay = n_overlay.get(package.id, 0) - - default = {'id': None} - package.last_version_gentoo_id = last_versions_gentoo.get( - package.id, default - )['id'] - package.last_version_overlay_id = last_versions_overlay.get( - package.id, default - )['id'] - package.last_version_upstream_id = last_versions_upstream.get( - package.id, default - )['id'] - package.save() - - n_packages_gentoo = int(package.n_packaged == package.n_versions) - n_packages_overlay = int(package.n_overlay and package.n_packaged \ - + package.n_overlay == package.n_versions) - n_packages_outdated = int(package.n_packaged + package.n_overlay \ - < package.n_versions) - - def update_row(storage, key): - storage[key].n_packages_gentoo += n_packages_gentoo - storage[key].n_packages_overlay += n_packages_overlay - storage[key].n_packages_outdated += n_packages_outdated - - storage[key].n_versions_gentoo += package.n_packaged - storage[key].n_versions_overlay += package.n_overlay - storage[key].n_versions_upstream += package.n_versions - \ - package.n_packaged - \ - package.n_overlay - - def update_log(storage, qs): - for row in qs: - update_row(storage, row['id']) - - if not nolog: - update_log(herds, package.herds.all().values('id')) - update_log(maintainers, package.maintainers.all().values('id')) - update_row(categories, package.category) - - wlog.n_packages_gentoo += n_packages_gentoo - wlog.n_packages_overlay += n_packages_overlay - wlog.n_packages_outdated += n_packages_outdated - - wlog.n_versions_gentoo += package.n_packaged - wlog.n_versions_overlay += package.n_overlay - wlog.n_versions_upstream += package.n_versions - \ - package.n_packaged - \ - package.n_overlay - - if nolog: - return - - for clog in categories.values(): - logger.info('+ [cl] %s', clog) - charts.rrd_update('category-%s' % clog.category, now, clog) - clog.save() - - for hlog in herds.values(): - logger.info('+ [hl] %s', hlog) - charts.rrd_update('herd-%d' % hlog.herd.id, now, hlog) - hlog.save() - - for mlog in maintainers.values(): - logger.info('+ [ml] %s', mlog) - charts.rrd_update('maintainer-%d' % mlog.maintainer.id, now, mlog) - mlog.save() - - charts.rrd_update('world', now, wlog) - wlog.save() diff --git a/euscanwww/djeuscan/processing/misc/update_portage_trees.py b/euscanwww/djeuscan/processing/misc/update_portage_trees.py deleted file mode 100644 index 55281a2..0000000 --- a/euscanwww/djeuscan/processing/misc/update_portage_trees.py +++ /dev/null @@ -1,133 +0,0 @@ -import os -import sys - -from django.conf import settings - - -def _launch_command(cmd, env=None, logger=None): - """ - Helper for launching shell commands inside tasks - """ - import subprocess - import select - - fp = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - mask = select.EPOLLIN | select.EPOLLHUP | select.EPOLLERR - - epoll = select.epoll() - epoll.register(fp.stdout.fileno(), mask) - epoll.register(fp.stderr.fileno(), mask) - - if logger: - info, error = logger.info, logger.error - else: - info = lambda x: sys.stdout.write(x + '\n') - error = lambda x: sys.stderr.write(x + '\n') - - try: - exited = False - while not exited: - events = epoll.poll(1) - for fileno, event in events: - if event & select.EPOLLIN: - if fileno == fp.stdout.fileno(): - source, out = fp.stdout, info - else: - source, out = fp.stderr, error - line = source.readline().rstrip('\n') - out("%s[%s]: %s" % (cmd[0], fp.pid, line)) - elif event & (select.EPOLLERR | select.EPOLLHUP): - exited = True - finally: - epoll.close() - - fp.wait() - - -def emerge_sync(logger): - """ - Launches an emerge --sync - """ - cmd = ["emerge", "--sync", "--root", settings.PORTAGE_ROOT, - "--config-root", settings.PORTAGE_CONFIGROOT] - return _launch_command(cmd, logger=logger) - - -def emerge_metadata(logger): - """ - Launches an emerge --metadata - """ - cmd = ["emerge", "--metadata", "--root", settings.PORTAGE_ROOT, - "--config-root", settings.PORTAGE_CONFIGROOT] - return _launch_command(cmd, logger=logger) - - -def layman_sync(logger, cache=True): - """ - Syncs Layman repos - """ - from layman import Layman - import shutil - - l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__, - stdout=sys.__stdout__, config=settings.LAYMAN_CONFIG, root="/") - - installed_overlays = l.get_installed() - - for overlay in installed_overlays: - logger.info('Cleaning cache for overlay %s...' % overlay) - overlay_path = os.path.join(l.config['storage'], overlay) - dirs = [os.path.join(overlay_path, 'metadata/cache'), - os.path.join(overlay_path, 'metadata/md5-cache')] - files = [os.path.join(overlay_path, 'profiles/use.local.desc')] - for dirname in dirs: - if os.path.isdir(dirname): - shutil.rmtree(dirname, True) - for filename in files: - if os.path.exists(filename): - os.remove(filename) - - # FIXME, try to find a way to log layman output... - #l.sync(installed_overlays, output_results=False) - env = dict(os.environ) - env['ROOT'] = '/' - cmd = ['layman', '-S', '--config', settings.LAYMAN_CONFIG] - _launch_command(cmd, env=env, logger=logger) - - cmd = ['egencache', '--jobs', "%s" % settings.EGENCACHE_JOBS, - '--rsync', '--config-root', settings.PORTAGE_CONFIGROOT, - '--update', '--update-use-local-desc'] - - for overlay in installed_overlays: - logger.info('Generating cache for overlay %s...' % overlay) - overlay_path = os.path.join(l.config['storage'], overlay) - repo_path = os.path.join(overlay_path, 'profiles/repo_name') - if not os.path.exists(repo_path): - continue - _launch_command(cmd + ['--repo', overlay], logger=logger) - - -def eix_update(logger): - """ - Launches eix-update - """ - cmd = ["eix-update"] - return _launch_command(cmd, logger=logger) - - -def update_portage_trees(logger=None): - from djeuscan.processing import FakeLogger - - logger = logger or FakeLogger() - logger.info("Running emerge --sync") - emerge_sync(logger) - emerge_metadata(logger) - logger.info("Running layman --sync") - layman_sync(logger, cache=True) - #logger.info("Running emerge --regen") - #emerge_regen(logger) - logger.info("Running eix-update") - eix_update(logger) - logger.info("Done!") diff --git a/euscanwww/djeuscan/processing/scan/__init__.py b/euscanwww/djeuscan/processing/scan/__init__.py deleted file mode 100644 index 611ee4c..0000000 --- a/euscanwww/djeuscan/processing/scan/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -__all__ = [ - "scan_metadata", "scan_portage", "scan_upstream", -] - -from scan_metadata import scan_metadata -from scan_portage import scan_portage -from scan_upstream import scan_upstream diff --git a/euscanwww/djeuscan/processing/scan/scan_metadata.py b/euscanwww/djeuscan/processing/scan/scan_metadata.py deleted file mode 100644 index 22bad3f..0000000 --- a/euscanwww/djeuscan/processing/scan/scan_metadata.py +++ /dev/null @@ -1,255 +0,0 @@ -import os - -import portage -from gentoolkit.metadata import MetaData - -import xml.etree.cElementTree as etree - -from django.db.transaction import commit_on_success -from django.core.management.color import color_style -from django.core.exceptions import ValidationError - -from djeuscan.models import Package, Version, Herd, Maintainer -from djeuscan.processing import FakeLogger - - -class ScanMetadata(object): - def __init__(self, logger=None): - self.style = color_style() - self.logger = logger or FakeLogger() - - def get_package(self, query): - try: - return Package.objects.get(name=query) - except Package.DoesNotExist: - pass - - try: - category, package = portage.catsplit(query) - return Package.objects.get(category=category, name=package) - except Package.DoesNotExist: - pass - - try: - category, package, ver, rev = portage.catpkgsplit(query) - return Package.objects.get(category=category, name=package) - except Package.DoesNotExist: - pass - - return None - - def metadata_from_db(self, query, pkg=None): - if not pkg: - pkg = self.get_package(query) - - try: - version = Version.objects.filter(package=pkg).\ - values('metadata_path').order_by('version', 'revision')[0] - except IndexError: - return pkg, None - - if not version['metadata_path']: - return pkg, None - return pkg, MetaData(version['metadata_path']) - - def metadata_from_portage(self, query, pkg=None): - from gentoolkit.query import Query - - matches = Query(query).smart_find( - in_installed=True, - in_porttree=True, - in_overlay=True, - include_masked=True, - show_progress=False, - no_matches_fatal=False, - ) - - if not matches: - self.logger.error( - self.style.ERROR("Unknown package '%s'" % query) - ) - return pkg, None - - matches = sorted(matches) - package = matches.pop() - if '9999' in package.version and len(matches): - package = matches.pop() - - if not pkg: - pkg, created = Package.objects.get_or_create( - category=package.category, name=package.name - ) - else: - created = False - - if created: - self.logger.info('+ [p] %s/%s' % (pkg.category, pkg.name)) - - return pkg, package.metadata - - def scan(self, query=None, pkg=None): - try: - metadata = None - pkg, metadata = self.metadata_from_db(query, pkg) - - if not metadata: - pkg, metadata = self.metadata_from_portage(query, pkg) - - if not metadata: - return - except Exception as e: - if pkg: - self.logger.error( - self.style.ERROR('%s/%s: %s' % - (pkg.category, pkg.name, str(e))) - ) - else: - self.logger.error( - self.style.ERROR('%s: %s' % (query, str(e))) - ) - return - - herds = dict( - [(herd[0], herd) for herd in metadata.herds(True)] - ) - maintainers = dict( - [(m.email, m) for m in metadata.maintainers()] - ) - - existing_herds = [h.herd for h in pkg.herds.all()] - new_herds = set(herds.keys()).difference(existing_herds) - old_herds = set(existing_herds).difference(herds.keys()) - - existing_maintainers = [m.email for m in pkg.maintainers.all()] - new_maintainers = set(maintainers.keys()).\ - difference(existing_maintainers) - old_maintainers = set(existing_maintainers).\ - difference(maintainers.keys()) - - for herd in pkg.herds.all(): - if herd.herd in old_herds: - pkg.herds.remove(herd) - - for herd in new_herds: - herd = self.store_herd(*herds[herd]) - pkg.herds.add(herd) - - for maintainer in pkg.maintainers.all(): - email = maintainer.email - name = maintainer.name - if email in old_maintainers: - pkg.maintainers.remove(maintainer) - if (email in maintainers and - email == name and - maintainers[email].name != name and - maintainers[email].name): - maintainer.name = maintainers[email].name - maintainer.save() - - for maintainer in new_maintainers: - maintainer = maintainers[maintainer] - try: - maintainer = self.store_maintainer( - maintainer.name, maintainer.email - ) - pkg.maintainers.add(maintainer) - except ValidationError: - self.logger.error( - self.style.ERROR("Bad maintainer: '%s' '%s'" % \ - (maintainer.name, maintainer.email)) - ) - - pkg.save() - - def store_herd(self, name, email): - if not name: - name = '{nil}' - name = name.strip("\r").strip("\n").strip("\t").strip() - - herd, created = Herd.objects.get_or_create( - herd=name, - defaults={"email": email} - ) - - if created: - self.logger.info('+ [h] %s <%s>' % (name, email)) - - herd.email = email - herd.save() - - return herd - - def store_maintainer(self, name, email): - if not name: - name = email - if not name: - name = '{nil}' - - maintainer, created = Maintainer.objects.get_or_create( - email=email, - defaults={"name": name} - ) - - if created: - self.logger.info( - '+ [m] %s <%s>' % (name.encode('utf-8'), email) - ) - return maintainer - - def populate_herds_and_maintainers(self, herds_xml_path=None): - self.logger.info("Populating herds and maintainers from herds.xml...") - - herds_xml_path = herds_xml_path or os.path.join( - portage.settings["PORTDIR"], "metadata", "herds.xml" - ) - try: - self._herdstree = etree.parse(herds_xml_path) - except IOError: - return None - - for herd_node in self._herdstree.getiterator('herd'): - herd_name = herd_node.findtext('name') - herd_email = herd_node.findtext('email') - - try: - herd = self.store_herd(herd_name, herd_email) - except ValidationError: # just skip invalid data - continue - - herd.maintainers.clear() # clear previous data - - for maintainer_node in herd_node: - if maintainer_node.tag == "maintainer": - maintainer_name = maintainer_node.findtext('name') - maintainer_email = maintainer_node.findtext('email') - - try: - maintainer = self.store_maintainer( - maintainer_name, maintainer_email - ) - except ValidationError: - self.logger.error( - self.style.ERROR("Bad maintainer: '%s' '%s'" % \ - (maintainer_name, maintainer_email)) - ) - - herd.maintainers.add(maintainer) - - -@commit_on_success -def scan_metadata(packages=None, category=None, logger=None, populate=False): - scan_handler = ScanMetadata(logger=logger) - - if category: - packages = Package.objects.filter(category=category) - elif packages is None: - packages = Package.objects.all() - - if populate: - scan_handler.populate_herds_and_maintainers() - - for pkg in packages: - if isinstance(pkg, Package): - scan_handler.scan('%s/%s' % (pkg.category, pkg.name), pkg) - else: - scan_handler.scan(pkg) diff --git a/euscanwww/djeuscan/processing/scan/scan_portage.py b/euscanwww/djeuscan/processing/scan/scan_portage.py deleted file mode 100644 index 857fce2..0000000 --- a/euscanwww/djeuscan/processing/scan/scan_portage.py +++ /dev/null @@ -1,450 +0,0 @@ -import subprocess - -import os -import sys - -import portage - -from gentoolkit.metadata import MetaData - -from layman import Layman - -from xml.etree.ElementTree import iterparse, ParseError - -from django.db.transaction import commit_on_success -from django.db import models -from django.core.management.color import color_style -from django.conf import settings - -from euscan.version import get_version_type - -from djeuscan.processing import FakeLogger -from djeuscan.models import Package, Version, VersionLog, Category, Overlay - - -class ScanPortage(object): - def __init__(self, logger=None, no_log=False, purge_packages=False, - purge_versions=False, upstream=False): - self.logger = logger or FakeLogger() - self.no_log = no_log - self.purge_packages = purge_packages - self.purge_versions = purge_versions - self.upstream = upstream - - self.style = color_style() - - self._cache = {'packages': {}, 'versions': {}} - self._overlays = None - self._packages_updated = set() - self._versions = set() - self._versions_seen = set() - - def packages_updated(self): - return list(self._packages_updated) - - def hash_package(self, category, name): - return '%s/%s' % (category, name) - - def cache_store_package(self, package): - key = self.hash_package(package.category, package.name) - self._cache['packages'][key] = package - - def cache_get_package(self, category, name): - return self._cache['packages'].get( - self.hash_package(category, name) - ) - - def hash_version(self, category, name, version, revision, - overlay): - key = '%s/%s-%s-r%s %s' % (category, name, - version, revision, - overlay) - return key - - def cache_get_version(self, category, name, version, revision, - overlay): - key = self.hash_version(category, name, version, revision, - overlay) - return self._cache['versions'].get(key) - - def cache_store_version(self, version): - key = self.hash_version( - version.package.category, version.package.name, version.version, - version.revision, version.overlay - ) - self._cache['versions'][key] = version - self._versions.add(version) - - def scan_gentoopm(self, query, category=None): - import gentoopm - - pm = gentoopm.get_package_manager() - - if category: - packages = pm.stack.filter(key_category=category) - elif query: - packages = pm.stack.filter(query) - else: - packages = pm.stack - - package = {} - package_name = None - - for p in packages: - pkg = p.key.package - - if pkg != package_name: - if package_name: - yield package - package_name = pkg - package['package'] = p.key.package - package['category'] = p.key.category - package['homepage'] = ' '.join(p.homepages) - package['description'] = p.description - package['versions'] = [] - package['versions'].append( - (p._cpv, p.slot, p.repository or 'gentoo') - ) - - if package_name: - yield package - - def scan_eix_xml(self, query, category=None): - cmd = ['eix', '--xml'] - env = os.environ - env['XML_OVERLAY'] = 'true' - if query: - cmd.extend(['--exact', query]) - if category: - cmd.extend(['-C', category]) - - sub = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE) - output = sub.stdout - - try: - parser = iterparse(output, ["start", "end"]) - parser.next() # read root tag just for testing output - except ParseError: - if query: - msg = "Unknown package '%s'" % query - else: - msg = "No packages." - self.logger.error(self.style.ERROR(msg)) - return - - package = {'versions': []} - category = "" - - for event, elem in parser: - if event == "start": # on tag opening - if elem.tag == "category": - category = elem.attrib["name"] - elif elem.tag == "package": - package["package"] = elem.attrib["name"] - package["category"] = category - elif elem.tag in ["description", "homepage"]: - package[elem.tag] = elem.text or "" - elif elem.tag == "version": - # append version data to versions - cpv = "%s/%s-%s" % ( - package["category"], - package["package"], - elem.attrib["id"] - ) - slot = elem.attrib.get("slot", "0") - overlay = elem.attrib.get("repository", "gentoo") - overlay_path = elem.attrib.get("overlay", None) - package["versions"].append( - (cpv, slot, overlay, overlay_path) - ) - - elif event == "end": # on tag closing - if elem.tag == "package": - # clean old data - yield package - package = {"versions": []} - - if elem.tag == "category": - # clean old data - category = "" - elem.clear() - - def scan(self, query=None, category=None): - for data in self.scan_eix_xml(query, category): - #for data in self.scan_gentoopm(query, category): - cat, pkg = data['category'], data['package'] - package = self.store_package( - cat, pkg, data['homepage'], data['description'] - ) - - new_version = False - for cpv, slot, overlay, overlay_path in data['versions']: - obj, created = self.store_version( - package, cpv, slot, overlay, overlay_path - ) - self._versions_seen.add(obj) - new_version = created or new_version - - # If the package has at least one new version scan upstream for it - if new_version: - self._packages_updated.add(package) - - self.purge_old_versions() - self.purge_old_packages() - - def store_package(self, cat, pkg, homepage, description): - created = False - obj = self.cache_get_package(cat, pkg) - - if not obj: - obj, created = Package.objects.get_or_create( - category=cat, - name=pkg, - defaults={"homepage": homepage, "description": description}, - ) - self.cache_store_package(obj) - - if created: - self.logger.info('+ [p] %s/%s' % (cat, pkg)) - - return obj - - def store_version(self, package, cpv, slot, overlay, overlay_path): - cat, pkg, ver, rev = portage.catpkgsplit(cpv) - if not overlay: - overlay = 'gentoo' - - created = False - obj = self.cache_get_version( - package.category, package.name, ver, rev, overlay - ) - - overlay_path = overlay_path or portage.settings["PORTDIR"] - package_path = os.path.join(overlay_path, package.category, package.name) - ebuild_path = os.path.join(package_path, "%s.ebuild" % cpv.split("/")[-1]) - metadata_path = os.path.join(package_path, "metadata.xml") - if not os.path.exists(metadata_path): - metadata_path = None - - if not obj: - obj, created = Version.objects.get_or_create( - package=package, - revision=rev, - version=ver, - overlay=overlay, - defaults={ - "slot": slot, - "packaged": True, - "vtype": get_version_type(ver), - "confidence": 100, - "handler": "portage", - "ebuild_path": ebuild_path, - "metadata_path": metadata_path, - } - ) - if not created: # Created objects have defaults values - if obj.slot != slot or obj.package != True: - obj.slot = slot - obj.packaged = True - obj.save() - - if created: - self.cache_store_version(obj) - - # nothing to do (note: it can't be an upstream version because - # overlay can't be empty here) - if not created: - return obj, created - - # New version created - self.logger.info('+ [v] %s' % (obj)) - - if overlay == 'gentoo': - package.n_packaged += 1 - else: - package.n_overlay += 1 - package.n_versions += 1 - package.save() - - if not self.no_log: - VersionLog.objects.create( - package=obj.package, - action=VersionLog.VERSION_ADDED, - slot=obj.slot, - revision=obj.revision, - version=obj.version, - overlay=obj.overlay, - vtype=obj.vtype, - ) - - return obj, created - - def purge_old_packages(self): - if not self.purge_packages: - return - - packages = Package.objects.filter(n_packaged=0, n_overlay=0) - - for package in packages: - self.logger.info('- [p] %s' % (package)) - package.delete() - - def version_hack(self, version): - try: - if version.package.last_version_gentoo: - version.package.last_version_gentoo.pk - if version.package.last_version_overlay: - version.package.last_version_overlay.pk - if version.package.last_version_upstream: - version.package.last_version_upstream.pk - except Version.DoesNotExist: - version.package.last_version_gentoo = None - version.package.last_version_overlay = None - version.package.last_version_upstream = None - - def purge_old_versions(self): - if not self.purge_versions: - return - - versions = self._versions.difference(self._versions_seen) - - for version in versions: - self.logger.info('- [v] %s' % (version)) - - if version.packaged == False: - continue # Not our job - - # Fix last_version_ stuff that is sometime broken - self.version_hack(version) - - if version.overlay == 'gentoo': - version.package.n_packaged -= 1 - else: - version.package.n_overlay -= 1 - version.package.n_versions -= 1 - version.package.save() - - if self.no_log: - continue - - VersionLog.objects.create( - package=version.package, - action=VersionLog.VERSION_REMOVED, - slot=version.slot, - revision=version.revision, - version=version.version, - overlay=version.overlay, - vtype=version.vtype, - ) - # remove from last version ? - version.delete() - - def prefetch(self, packages, category): - self.logger.info('Prefetching current objects...') - - ppackages = Package.objects.all() - pversions = Version.objects.filter(packaged=True)\ - .select_related('package').all() - - if category: - ppackages = ppackages.filter(category=category) - pversions = pversions.filter(package__category=category) - if packages: - ids = [package.id for package in packages] - ppackages = ppackages.filter(pk__in=ids) - pversions = pversions.filter(package__pk__in=ids) - - for package in ppackages: - self.cache_store_package(package) - for version in pversions: - self.cache_store_version(version) - - self.logger.info('done') - - -def populate_categories(logger): - portdir = portage.settings["PORTDIR"] - for cat in portage.settings.categories: - try: - meta = MetaData(os.path.join(portdir, cat, "metadata.xml")) - desc = meta.descriptions()[0] - except (IOError, IndexError): - desc = "" - obj, created = Category.objects.get_or_create(name=cat) - obj.description = desc.strip() - obj.save() - if created: - logger.info("+ [c] %s", cat) - - -def populate_overlays(logger): - l = Layman(stderr=sys.__stderr__, stdin=sys.__stdin__, - stdout=sys.__stdout__, config=settings.LAYMAN_CONFIG, root="/") - installed_overlays = l.get_installed() - info = l.get_all_info(installed_overlays) - for overlay in installed_overlays: - if not overlay: - continue - obj, created = Overlay.objects.get_or_create(name=overlay) - if overlay in info and type(info[overlay]) == dict: - obj.description = info[overlay]["description"] - obj.homepage = info[overlay]["homepage"] - obj.overlay_path = os.path.join(l.config['storage'], overlay) - obj.save() - if created: - logger.info("+ [o] %s", overlay) - - -@commit_on_success -def scan_portage(packages=None, category=None, no_log=False, upstream=False, - purge_packages=False, purge_versions=False, logger=None): - - logger = logger or FakeLogger() - - scan_handler = ScanPortage( - logger=logger, - no_log=no_log, - purge_packages=purge_packages, - purge_versions=purge_versions - ) - - logger.info('Scanning portage tree...') - - if not packages: - qs = Package.objects.all() - if category: - qs = qs.filter(category=category) - prefetch_packages = qs - else: - results = [] - for package in packages: - if isinstance(package, Package): - results.append(package) - else: - if '/' in package: - cat, pkg = portage.catsplit(package) - qs = Package.objects.filter(category=cat, name=pkg) - else: - qs = Package.objects.filter(name=package) - for package in qs: - results.append(package) - prefetch_packages = results - - scan_handler.prefetch(prefetch_packages, category) - - if not packages and category: - scan_handler.scan(category=category) - elif not packages: - scan_handler.scan() - else: - for pkg in packages: - if isinstance(pkg, Package): - scan_handler.scan('%s/%s' % (pkg.category, pkg.name)) - else: - scan_handler.scan(pkg) - - populate_categories(logger) - populate_overlays(logger) - - logger.info('Done.') - return scan_handler.packages_updated() diff --git a/euscanwww/djeuscan/processing/scan/scan_upstream.py b/euscanwww/djeuscan/processing/scan/scan_upstream.py deleted file mode 100644 index dc7ba1b..0000000 --- a/euscanwww/djeuscan/processing/scan/scan_upstream.py +++ /dev/null @@ -1,176 +0,0 @@ -import portage - -from django.utils import timezone -from django.db.transaction import commit_on_success - -from euscan import CONFIG, output -from euscan.scan import scan_upstream as euscan_scan_upstream - -from djeuscan.processing import FakeLogger -from djeuscan.models import Package, Version, EuscanResult, VersionLog - - -class ScanUpstream(object): - def __init__(self, logger=None, purge_versions=False): - self.logger = logger or FakeLogger() - self.purge_versions = purge_versions - self._versions = set() - self._versions_seen = set() - - def scan(self, package): - CONFIG["format"] = "dict" - output.clean() - output.set_query(package) - - euscan_scan_upstream(package) - - out = output.get_formatted_output() - out_json = output.get_formatted_output("json") - - try: - cpv = out[package]["metadata"]["cpv"] - scan_time = out[package]["metadata"]["scan_time"] - ebuild = out[package]["metadata"]["ebuild"] - except KeyError: - self.logger.error( - "Error while scanning upstream for package %s!", - package - ) - self.logger.debug( - "Error %s", - out_json - ) - return {} - - obj = self.store_package(cpv) - for res in out[package]["result"]: - if not res['version']: - continue - self.store_version( - obj, - res["version"], - " ".join(res["urls"]), - res["type"], - res["handler"], - res["confidence"], - ) - - self.store_result(obj, out_json, scan_time, ebuild) - - def store_result(self, package, formatted_log, scan_time, ebuild): - # Remove previous logs - EuscanResult.objects.filter(package=package).delete() - - obj = EuscanResult() - obj.package = package - obj.result = formatted_log - obj.datetime = timezone.now() - obj.scan_time = scan_time - obj.ebuild = ebuild - obj.save() - - def store_package(self, cpv): - cat, pkg, ver, rev = portage.catpkgsplit(cpv) - - obj, created = Package.objects.get_or_create(category=cat, name=pkg) - - if created: - self.logger.info('+ [p] %s/%s' % (cat, pkg)) - - versions = Version.objects.filter( - package=obj, packaged=False - ) - for version in versions: - self._versions.add(version) - - return obj - - def store_version(self, package, ver, url, version_type, handler, - confidence): - obj, created = Version.objects.get_or_create( - package=package, - revision='r0', - version=ver, - overlay='', - defaults={"slot": '', "urls": url, "packaged": False, - "vtype": version_type, "handler": handler, - "confidence": confidence} - ) - - if not created: - obj.slot = '' - obj.urls = url - obj.packaged = False - obj.save() - - self._versions_seen.add(obj) - - # If it's not a new version, just update the object and continue - if not created: - return - - self.logger.info('+ [u] %s %s' % (obj, url)) - - VersionLog.objects.create( - package=package, - action=VersionLog.VERSION_ADDED, - slot='', - revision='r0', - version=ver, - overlay='', - vtype=version_type, - ) - - package.n_versions += 1 - package.save() - - def purge_old_versions(self): - if not self.purge_versions: - return - - versions = self._versions.difference(self._versions_seen) - for version in versions: - if version.packaged == True: - continue # Not our job - VersionLog.objects.create( - package=version.package, - action=VersionLog.VERSION_REMOVED, - slot=version.slot, - revision=version.revision, - version=version.version, - overlay=version.overlay, - vtype=version.vtype, - ) - - version.package.n_versions -= 1 - version.package.save() - - self.logger.info('- [u] %s %s' % (version, version.urls)) - - version.delete() - - -@commit_on_success -def scan_upstream(packages=None, purge_versions=False, - logger=None): - logger = logger or FakeLogger() - - scan_handler = ScanUpstream(logger=logger, purge_versions=purge_versions) - - logger.info('Scanning upstream...') - - if not packages: - packages = Package.objects.all() - - for pkg in packages: - try: - package = '%s/%s' % (pkg.category, pkg.name) - except AttributeError: - package = pkg - - logger.info('Scanning %s' % package) - scan_handler.scan(package) - - scan_handler.purge_old_versions() - - logger.info('Done.') diff --git a/euscanwww/djeuscan/tasks.py b/euscanwww/djeuscan/tasks.py deleted file mode 100644 index 1929593..0000000 --- a/euscanwww/djeuscan/tasks.py +++ /dev/null @@ -1,390 +0,0 @@ -""" -Celery tasks for djeuscan -""" - -from datetime import datetime - -from celery.task import task, group - -#import portage - -from django.conf import settings -from django.template.loader import render_to_string -from django.core.mail import send_mail -from django.db.models import Q - -from euscan.version import gentoo_unstable - -from djeuscan.models import Package, RefreshPackageQuery, VersionLog -from djeuscan.processing import scan, misc - -from euscan_accounts.helpers import get_account_versionlogs, get_user_fav_infos -from euscan_accounts.models import UserProfile - - -class TaskFailedException(Exception): - """ - Exception for failed tasks - """ - pass - - -def group_one(task, seq, *args, **kwargs): - """ - Create a group of tasks, each task handle one element of seq - """ - tasks = [] - - if "attr_name" in kwargs: - attr_name = kwargs['attr_name'] - del kwargs["attr_name"] - else: - attr_name = None - - for elem in seq: - if attr_name: - kwargs[attr_name] = elem - tasks.append(task.subtask(args=list(args), kwargs=dict(kwargs), - immutable=True)) - else: - tasks.append(task.subtask(args=[elem] + list(args), - kwargs=dict(kwargs), immutable=True)) - - return group(tasks) - - -def group_chunks(task, seq, n, *args, **kwargs): - """ - Creates a group of tasks, each subtask has elements to handle - """ - tasks = [] - for i in xrange(0, len(seq), n): - tasks.append( - task.subtask(args=[seq[i:i + n]] + list(args), kwargs=kwargs, - immutable=True) - ) - return group(tasks) - - -@task -def regen_rrds(): - """ - Regenerate RRDs - """ - misc.regen_rrds() - return True - - -@task -def update_counters(fast=False): - """ - Updates counters - """ - logger = update_counters.get_logger() - logger.info("Updating counters (fast=%s)...", fast) - misc.update_counters(fast=fast) - logger.info("Done") - return True - - -@task -def scan_metadata(packages=[], category=None, populate=False): - """ - Scans metadata for the given set of packages - """ - logger = scan_metadata.get_logger() - - if packages: - logger.info("Starting metadata scan for %d packages...", - len(packages)) - elif category: - logger.info("Starting metadata scan for %s...", - category) - else: - logger.info("Starting metadata scan...") - - scan.scan_metadata( - packages=packages, - category=category, - logger=logger, - populate=populate, - ) - return True - - -@task -def scan_portage(packages=None, category=None, - no_log=False, purge_packages=False, - purge_versions=False): - """ - Scans portage for the given set of packages - """ - logger = scan_portage.get_logger() - - if packages: - logger.info("Starting portage scan for %d packages...", - len(packages)) - elif category: - logger.info("Starting portage scan for %s...", - category) - else: - logger.info("Starting portage scan...") - - return scan.scan_portage( - packages=packages, - category=category, - no_log=no_log, - purge_packages=purge_packages, - purge_versions=purge_versions, - logger=logger, - ) - - -@task -def scan_upstream(packages=[], purge_versions=False): - """ - Scans upstream for the given set of packages - """ - logger = scan_upstream.get_logger() - - if packages: - logger.info("Starting upstream scan subtask for %d packages...", - len(packages)) - else: - logger.info("Starting upstream scan...") - - scan.scan_upstream( - packages=packages, - purge_versions=purge_versions, - logger=logger, - ) - return True - - -@task -def update_portage_trees(): - """ - Update portage tree - """ - logger = update_portage_trees.get_logger() - misc.update_portage_trees(logger=logger) - return True - - -@task -def update_portage(packages=None): - #categories = portage.settings.categories - - # Workaround for celery bug when chaining groups - update_portage_trees() - updated_packages = scan_portage( - packages=None, - purge_packages=True, - purge_versions=True, - ) - scan_metadata(packages=None, populate=True) - - if not updated_packages: - # Simple/Fast path - update_counters(fast=False) - return - - ( - group_chunks(scan_upstream, updated_packages, - settings.TASKS_UPSTREAM_GROUPS, - purge_versions=True) | - update_counters.si(fast=False) - )() - - """ Currently broken - update_portage_trees() - scan_metadata(packages=None, populate=True) - ( - group_one(scan_portage, categories, - attr_name="category", purge_packages=True, - purge_versions=True) | - group_one(scan_metadata, categories, - attr_name="category") | - update_counters.si(fast=True) - )() - """ - return True - - -@task -def update_upstream(): - if settings.TASKS_UPSTREAM_GROUPS >= 1: - packages = Package.objects.all().order_by('pk') # .order_by('?') ? - - scan_upstream_sub = group_chunks(scan_upstream, packages, - settings.TASKS_UPSTREAM_GROUPS, - purge_versions=True) - else: - scan_upstream_sub = scan_upstream.si(purge_versions=True) - - ( - scan_upstream_sub | - update_counters.si(fast=False) | - send_update_email.si() - )() - return True - - -@task -def scan_package(package): - logger = scan_package.get_logger() - logger.info("Scanning package %s", package) - scan_portage([package], purge_packages=True, purge_versions=True) - scan_metadata([package]) - scan_upstream([package], purge_versions=True) - return True - - -@task(rate_limit="1/m") -def scan_package_user(package): - scan_package(package) - return True - - -@task(rate_limit="1/m") -def consume_refresh_queue(locked=False): - """ - Satisfies user requests for package refreshing, runs every minute - """ - logger = consume_refresh_queue.get_logger() - logger.info('Consuming package refresh request queue...') - - try: - query = RefreshPackageQuery.objects.all().order_by('-priority')[0] - pkg = query.package - query.delete() - scan_package_user.delay(pkg) - logger.info('Selected: %s' % pkg) - except IndexError: - return - - if RefreshPackageQuery.objects.count(): - logger.info('Restarting myself in 60s') - consume_refresh_queue.apply_async( - kwargs={'locked': True}, countdown=60 - ) - return True - - -@task(max_retries=10, default_retry_delay=10 * 60) -def send_user_email(address, subject, text): - try: - send_mail( - subject, text, settings.DEFAULT_FROM_EMAIL, [address], - fail_silently=False - ) - except Exception, exc: - raise send_user_email.retry(exc=exc) - return True - - -@task -def process_emails(profiles, only_if_vlogs=False): - for profile in profiles: - now = datetime.now() - user = profile.user - - vlogs = get_account_versionlogs(profile) - vlogs = vlogs.filter( - datetime__gt=profile.last_email, - overlay="", # only upstream versions - action=VersionLog.VERSION_ADDED, # only adds - ) - if profile.email_ignore_pre: - vlogs = vlogs.exclude(vtype__in=gentoo_unstable) - if profile.email_ignore_pre_if_stable: - vlogs = vlogs.exclude( - ~Q(package__last_version_gentoo__vtype__in=gentoo_unstable), - vtype__in=gentoo_unstable - ) - - if only_if_vlogs and not vlogs.count(): - continue - - vlogs = vlogs.order_by("-datetime") - - infos = get_user_fav_infos(user) - infos["user"] = user - infos["vlogs"] = vlogs - - mail_text = render_to_string( - "euscan/accounts/euscan_email.txt", - infos - ) - - send_user_email.delay( - user.email, "euscan updates - %s" % str(now.date()), mail_text - ) - - profile.last_email = now - profile.save(force_update=True) - return True - - -@task -def send_update_email(): - profiles = UserProfile.objects.filter( - email_every=UserProfile.EMAIL_SCAN, - email_activated=True - ) - group_chunks( - process_emails, - profiles, - settings.TASKS_EMAIL_GROUPS, - only_if_vlogs=True - )() - return True - - -@task -def send_weekly_email(): - profiles = UserProfile.objects.filter( - email_every=UserProfile.EMAIL_WEEKLY, - email_activated=True - ) - group_chunks(process_emails, profiles, settings.TASKS_EMAIL_GROUPS)() - return True - - -@task -def send_monthly_email(): - profiles = UserProfile.objects.filter( - email_every=UserProfile.EMAIL_MONTHLY, - email_activated=True - ) - group_chunks(process_emails, profiles, settings.TASKS_EMAIL_GROUPS)() - return True - - -@task -def collect_stabilization_candidates(): - """ - This task collects the packages that are stabilization candidates - """ - logger = collect_stabilization_candidates.get_logger() - misc.stabilization_candidates( - days_to_stabilization=settings.DAYS_TO_STABILIZATION, - logger=logger - ) - - -admin_tasks = [ - regen_rrds, - update_counters, - scan_metadata, - scan_portage, - scan_upstream, - update_portage_trees, - update_portage, - update_upstream, - scan_package, - send_update_email, - send_weekly_email, - send_monthly_email, - collect_stabilization_candidates, -] diff --git a/euscanwww/djeuscan/templates/_base.html b/euscanwww/djeuscan/templates/_base.html deleted file mode 100644 index dedc70e..0000000 --- a/euscanwww/djeuscan/templates/_base.html +++ /dev/null @@ -1,126 +0,0 @@ - - - -{% load url from future %} -{% load timedelta %} - - - - {% block title %}euscan{% endblock %} - - {% block meta %} - - {% endblock %} - {% block css %} - - - {% endblock %} - {% block javascript %} - {% endblock %} - - - -
-
-
-
-
- {% block content %}{% endblock %} -
-
-
-
-
- -
-
-
-
- - - diff --git a/euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html b/euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html deleted file mode 100644 index db2680b..0000000 --- a/euscanwww/djeuscan/templates/admin/djcelery/taskstate/change_list.html +++ /dev/null @@ -1,81 +0,0 @@ -{% extends "admin/change_list.html" %} - -{% load url from future %} - -{% block object-tools %} -
- -
- Launch task -
- - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/_categories_table.html b/euscanwww/djeuscan/templates/euscan/_categories_table.html deleted file mode 100644 index d3571e2..0000000 --- a/euscanwww/djeuscan/templates/euscan/_categories_table.html +++ /dev/null @@ -1,34 +0,0 @@ -{% load url from future %} -{% load djeuscan_helpers %} - - - - - - - - - - {% if extras %} - - {% endif %} - - - - {% for category in categories %} - - - {% package_cols category %} - {% if extras %} - - {% endif %} - - {% endfor %} - -
CategorygentoooverlaysupstreamfreshnessGraphs
- {{ category.category }} - {% package_bar category %} - - - -
diff --git a/euscanwww/djeuscan/templates/euscan/_datatable.html b/euscanwww/djeuscan/templates/euscan/_datatable.html deleted file mode 100644 index 6af9ba9..0000000 --- a/euscanwww/djeuscan/templates/euscan/_datatable.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "_base.html" %} - -{% block css %} -{{ block.super }} - -{% endblock %} - -{% block javascript %} -{{ block.super }} - - - - -{% endblock %} - -{% block menus %} -{{ block.super }} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/_herds_table.html b/euscanwww/djeuscan/templates/euscan/_herds_table.html deleted file mode 100644 index 9f3f337..0000000 --- a/euscanwww/djeuscan/templates/euscan/_herds_table.html +++ /dev/null @@ -1,36 +0,0 @@ -{% load url from future %} -{% load djeuscan_helpers %} - - - - - - - - - - {% if extras %} - - {% endif %} - - - - {% for herd in herds %} - - - {% package_cols herd %} - {% if extras %} - - {% endif %} - - {% endfor %} - -
HerdgentoooverlaysupstreamfreshnessGraphs
- - {{ herd.herds__herd }} - - {% package_bar herd %} - - - -
diff --git a/euscanwww/djeuscan/templates/euscan/_maintainers_table.html b/euscanwww/djeuscan/templates/euscan/_maintainers_table.html deleted file mode 100644 index 665e3e8..0000000 --- a/euscanwww/djeuscan/templates/euscan/_maintainers_table.html +++ /dev/null @@ -1,42 +0,0 @@ -{% load url from future %} -{% load djeuscan_helpers %} - - - - - - - - - - {% if extras %} - - {% endif %} - - - - {% for maintainer in maintainers %} - - - {% package_cols maintainer %} - - {% if extras %} - - {% endif %} - - - {% endfor %} - -
MaintainergentoooverlaysupstreamfreshnessGraphs
- - {% if maintainer.maintainers__name != maintainer.maintainers__email %} - {{ maintainer.maintainers__name }} <{{ maintainer.maintainers__email }}> - {% else %} - {{ maintainer.maintainers__name }} - {% endif %} - - {% package_bar maintainer %} - - - -
diff --git a/euscanwww/djeuscan/templates/euscan/_overlays_table.html b/euscanwww/djeuscan/templates/euscan/_overlays_table.html deleted file mode 100644 index 68409ca..0000000 --- a/euscanwww/djeuscan/templates/euscan/_overlays_table.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load url from future %} - - - - - - - - - {% for overlay in overlays %} - - - - {% endfor %} - -
Overlay
- - {{ overlay }} - -
diff --git a/euscanwww/djeuscan/templates/euscan/_package_bar.html b/euscanwww/djeuscan/templates/euscan/_package_bar.html deleted file mode 100644 index b9fc03f..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_bar.html +++ /dev/null @@ -1,9 +0,0 @@ -{% load mul %} -{% load sub %} -{% load div %} - -
-
-
-
-
diff --git a/euscanwww/djeuscan/templates/euscan/_package_cols.html b/euscanwww/djeuscan/templates/euscan/_package_cols.html deleted file mode 100644 index 540a8c1..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_cols.html +++ /dev/null @@ -1,30 +0,0 @@ -{% load djeuscan_helpers %} -{% load mul %} -{% load sub %} -{% load div %} - -{{ infos.n_packaged }} - -{% if infos.n_overlay == 0 or infos.n_overlay <= infos.n_packaged %} - -{% elif infos.n_overlay < infos.n_packaged %} - -{% else %} - -{% endif %} - {{ infos.n_overlay }} - - -{% if infos.n_versions == infos.n_packaged|add:infos.n_overlay %} - -{% elif infos.n_versions < infos.n_packaged|add:infos.n_overlay|mul:2 %} - -{% else %} - -{% endif %} -{{ infos.n_versions|sub:infos.n_packaged|sub:infos.n_overlay }} - - - - {{ infos.n_packaged|add:infos.n_overlay|div:infos.n_versions|mul:100|floatformat:"0" }} - diff --git a/euscanwww/djeuscan/templates/euscan/_package_details.html b/euscanwww/djeuscan/templates/euscan/_package_details.html deleted file mode 100644 index 64f8f3b..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_details.html +++ /dev/null @@ -1,125 +0,0 @@ -{% load djeuscan_helpers %} -{% load url from future %} - -
- {% if package.description %} -
Description
-
{{ package.description }}
- {% endif %} - {% if package.homepage %} -
Homepage
-
- {% for homepage in package.homepages %} - {{ homepage }}
- {% endfor %} -
- {% endif %} - {% if package.herds.all %} -
Herds
-
- {% for herd in package.herds.all %} -

- - {{ herd.herd }} - - <{{ herd.email }}> -

- {% endfor %} -
- {% endif %} - {% if package.maintainers.all %} -
Maintainers
-
- {% for maintainer in package.maintainers.all %} -

- {% if maintainer.name != maintainer.email %} - - {{ maintainer.name }} - - <{{ maintainer.email }}> - {% else %} - - {{ maintainer.email }} - - {% endif %} -

- {% endfor %} -
-
Q&A
-
- -
- {% endif %} - {% if packaged %} -
Packaged Versions
-
- -
- {% endif %} - {% if upstream %} -
Upstream versions
-
-
    - {% for version in upstream %} -
  • - upstream - - {% if version.vtype and not version.vtype|is_stable %} - unstable - {% endif %} - - {{ version.version }} - - {% for url in version.urls_list %} - {{ url }} - {% endfor %} - ({% if version.handler != "generic" %}{{ version.handler }} - {% endif %}{{ version.confidence }}%) -
  • - {% endfor %} -
-
- {% endif %} - {% include "euscan/_package_vlogs.html" %} - {% if log %} -
euscan log
-
-

Date: {{ log.datetime }}

-
{{ msg|ansi_to_html|safe }}
-
- {% endif %} -
diff --git a/euscanwww/djeuscan/templates/euscan/_package_vlogs.html b/euscanwww/djeuscan/templates/euscan/_package_vlogs.html deleted file mode 100644 index f67fb06..0000000 --- a/euscanwww/djeuscan/templates/euscan/_package_vlogs.html +++ /dev/null @@ -1,31 +0,0 @@ -{% load djeuscan_helpers %} - - {% if vlog %} -
Version history
-
-
    - {% for version in vlog %} - {% if version.action == version.VERSION_ADDED %} -
  • - {% else %} -
  • - {% endif %} - {% if version.overlay == "gentoo" %} - gentoo - {% elif version.overlay %} - overlays - {% else %} - upstream - {% endif %} - - {% if version.vtype and not version.vtype|is_stable %} - unstable - {% endif %} - - {{ version }} - {{ version.datetime }} - -
  • - {% endfor %} -
-
- {% endif %} diff --git a/euscanwww/djeuscan/templates/euscan/_packages.html b/euscanwww/djeuscan/templates/euscan/_packages.html deleted file mode 100644 index 4ecb9d3..0000000 --- a/euscanwww/djeuscan/templates/euscan/_packages.html +++ /dev/null @@ -1,62 +0,0 @@ -{% load djeuscan_helpers %} -{% load sub %} -{% load div %} -{% load mul %} -{% load djeuscan_helpers %} - -{% load url from future %} - - - - - - - - - - - - - - - - {% for package in packages %} - - - - - - {% package_cols package %} - - {% endfor %} - -
Packagegentoooverlaysupstreamgentoooverlaysupstreamfreshness
- - {{ package.category }}/{{ package.name }} - - {% package_bar package %} - - {% with vtype=package.last_version_gentoo.version|version_type %} - {% if not vtype|is_stable %} - unstable - {% endif %} - {% endwith %} - - {{ package.last_version_gentoo.version|truncatechars:15 }} - - {% with vtype=package.last_version_overlay.version|version_type %} - {% if not vtype|is_stable %} - unstable - {% endif %} - {% endwith %} - - {{ package.last_version_overlay.version|truncatechars:15 }} - - {% with vtype=package.last_version_upstream.version|version_type %} - {% if not vtype|is_stable %} - unstable - {% endif %} - {% endwith %} - - {{ package.last_version_upstream.version|truncatechars:15 }} -
diff --git a/euscanwww/djeuscan/templates/euscan/about.html b/euscanwww/djeuscan/templates/euscan/about.html deleted file mode 100644 index 7079cc2..0000000 --- a/euscanwww/djeuscan/templates/euscan/about.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "_base.html" %} - -{% block content %} -

What's euscan ?

-

- Euscan is both a tool to check if an ebuild is outdated (app-portage/euscan) and a web interface. -

-

- This web interface allow you to browse the portage tree, and find outdated ebuilds. It is designed to help maintainers monitor their packages and bump them. -

-

- euscan code source is available on github. -

-

- Original Gentoo artwork and logos copyright (C) Gentoo Foundation. - Design inspired by (stolen from) gentoo.org and bugs.gentoo.org. -

-

- This site is not an official Gentoo website. -

- -

- Copyright (C) 2011 Corentin Chary -

- -

- Powered by: - - Linux Kernel - - - Gentoo Linux - - - Django - - - Python - -

-{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/api.html b/euscanwww/djeuscan/templates/euscan/api.html deleted file mode 100644 index e3f5ce3..0000000 --- a/euscanwww/djeuscan/templates/euscan/api.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block content %} -

API

- - - -

Formats: xml, yaml and json

- -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/categories.html b/euscanwww/djeuscan/templates/euscan/categories.html deleted file mode 100644 index 93a81f6..0000000 --- a/euscanwww/djeuscan/templates/euscan/categories.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - categories -{% endblock %} - -{% block content %} -

Categories

- -{% categories_table categories request.GET.extras %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/category.html b/euscanwww/djeuscan/templates/euscan/category.html deleted file mode 100644 index 22a8cec..0000000 --- a/euscanwww/djeuscan/templates/euscan/category.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Category: {{ category }} -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ category|truncatechars:15 }} - -
  • -{% endblock %} - -{% block content %} -

    - Category: {{ category }} - - {% if user.is_authenticated %} - - {% favourite_buttons "category" category %} - - {% endif %} -

    - -

    {{ category.description }}

    - -{% packages packages %} - -

    Statistics

    -

    Current statistics

    -

    - pie versions - pie packages -

    - -

    All Time

    -

    - versions weekly - versions monthly -

    - -

    - packages weekly - packages monthly -

    - - -{% endblock %} - -{% block menus %} -{{ block.super }} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/config.html b/euscanwww/djeuscan/templates/euscan/config.html deleted file mode 100644 index 0990eed..0000000 --- a/euscanwww/djeuscan/templates/euscan/config.html +++ /dev/null @@ -1,124 +0,0 @@ -{% extends "_base.html" %} - -{% block content %} -

    Server configuration

    - - - - - {% for key, value in make_conf.items %} - - - - - {% endfor %} -
    -

    make.conf

    -
    {{ key }}{{ value }}
    - -
    - - - - {% for key, value in layman_repos.items %} - - - - - {% endfor %} -
    -

    Available overlays

    -
    {{ key }}{{ value.description }}
    - -
    - - - - {% for key, value in euscan_config.CONFIG.items %} - - - - - {% endfor %} -
    -

    Euscan config

    -
    {{ key }}{{ value }}
    - -
    - - - - {% for item in euscan_config.BLACKLIST_VERSIONS %} - - - - {% endfor %} -
    -

    Versions blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.BLACKLIST_PACKAGES %} - - - - {% endfor %} -
    -

    Packages blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.SCANDIR_BLACKLIST_URLS %} - - - - {% endfor %} -
    -

    Scandir blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.BRUTEFORCE_BLACKLIST_PACKAGES %} - - - - {% endfor %} -
    -

    Bruteforce packages blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.BRUTEFORCE_BLACKLIST_URLS %} - - - - {% endfor %} -
    -

    Bruteforce urls blacklist

    -
    {{ item }}
    - -
    - - - - {% for item in euscan_config.ROBOTS_TXT_BLACKLIST_DOMAINS %} - - - - {% endfor %} -
    -

    Robots.txt domain blacklist

    -
    {{ item }}
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/feeds.html b/euscanwww/djeuscan/templates/euscan/feeds.html deleted file mode 100644 index 280131b..0000000 --- a/euscanwww/djeuscan/templates/euscan/feeds.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block content %} -

    Feeds

    - -
    -

    - Euscan provides different types of feed for keeping an eye on the packages - you're interested in as well as a set of options to customize them. -

    -

    Options

    -
      -
    • portage_info: Get info about portage updates (default: on)
    • -
    • upstream_info: Get info about upstream updates (default: on)
    • -
    • show_adds: Show version bumps (default: on)
    • -
    • show_removals: Show removals (default: on)
    • -
    • ignore_pre: Ignore unstable releases (default: off)
    • -
    • ignore_pre_if_stable: Ignore unstable releases only if current release is stable (default: off)
    • -
    - -

    Usage examples

    - -
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/herd.html b/euscanwww/djeuscan/templates/euscan/herd.html deleted file mode 100644 index afc187d..0000000 --- a/euscanwww/djeuscan/templates/euscan/herd.html +++ /dev/null @@ -1,64 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Herd: {{ herd.herd }} -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ herd.herd|truncatechars:15 }} - -
  • -{% endblock %} - -{% block content %} -

    - Herd: {{ herd.herd }} - {% if user.is_authenticated %} - - {% favourite_buttons "herd" herd.herd %} - - {% endif %} - -

    -{% packages packages %} - -

    Statistics

    -

    Current statistics

    -

    - pie versions - pie packages -

    - -

    All Time

    -

    - versions weekly - versions monthly -

    -

    - packages weekly - packages monthly -

    - - -{% endblock %} - -{% block menus %} -{{ block.super }} - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/herds.html b/euscanwww/djeuscan/templates/euscan/herds.html deleted file mode 100644 index ff04497..0000000 --- a/euscanwww/djeuscan/templates/euscan/herds.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - herds -{% endblock %} - -{% block content %} -

    Herds

    - -{% herds_table herds request.GET.extras %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/index.html b/euscanwww/djeuscan/templates/euscan/index.html deleted file mode 100644 index bd3e19f..0000000 --- a/euscanwww/djeuscan/templates/euscan/index.html +++ /dev/null @@ -1,27 +0,0 @@ -{% extends "_base.html" %} - -{% load timedelta %} - -{% block content %} -

    What's euscan ?

    -

    -Euscan is both a tool to check if an ebuild is outdated (app-portage/euscan) -and a web interface. -

    -

    -This web interface allow you to browse the portage tree, and find outdated -ebuilds. It is designed to help maintainers monitor their packages and bump them. -

    - -

    Overview

    -
      -
    • Packages: {{ n_packages }}
    • -
    • Versions: {{ n_packaged }}
    • -
    • Versions not-packaged: {{ n_upstream }}
    • -
    • Herds: {{ n_herds }}
    • -
    • Maintainers: {{ n_maintainers }}
    • - {% if last_scan %} -
    • Last scan: {{ last_scan }} ({{ last_scan|timedelta }})
    • - {% endif %} -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/maintainer.html b/euscanwww/djeuscan/templates/euscan/maintainer.html deleted file mode 100644 index 82ed52b..0000000 --- a/euscanwww/djeuscan/templates/euscan/maintainer.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Maintainer: {{ maintainer.name }} -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ maintainer.name|truncatechars:15 }} - -
  • -{% endblock %} - -{% block content %} -

    - Maintainer: {{ maintainer.name }} <{{ maintainer.email }}> - {% if user.is_authenticated %} - - {% favourite_buttons "maintainer" maintainer.email %} - - {% endif %} -

    - -{% packages packages %} - -

    Statistics

    -

    Current statistics

    -

    - pie versions - pie packages -

    - -

    All Time

    -

    - version weekly - versions monthly -

    - -

    - packages weekly - packages monthly -

    - - -{% endblock %} - -{% block menus %} -{{ block.super }} - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/maintainers.html b/euscanwww/djeuscan/templates/euscan/maintainers.html deleted file mode 100644 index 1514231..0000000 --- a/euscanwww/djeuscan/templates/euscan/maintainers.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - maintainers -{% endblock %} - -{% block content %} -

    Maintainers

    - -{% maintainers_table maintainers request.GET.extras %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/overlay.html b/euscanwww/djeuscan/templates/euscan/overlay.html deleted file mode 100644 index 394729f..0000000 --- a/euscanwww/djeuscan/templates/euscan/overlay.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - Overlay: {{ overlay }} -{% endblock %} - -{% block content %} -

    - Overlay: {{ overlay }} - {% if user.is_authenticated %} - - {% favourite_buttons "overlay" overlay %} - - {% endif %} - -

    - -

    {{ overlay.description }}

    -

    Homepage

    - -{% packages packages %} - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/overlays.html b/euscanwww/djeuscan/templates/euscan/overlays.html deleted file mode 100644 index 8bdafe4..0000000 --- a/euscanwww/djeuscan/templates/euscan/overlays.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - overlays -{% endblock %} - -{% block content %} -

    Overlays

    - -{% overlays_table overlays %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/package.html b/euscanwww/djeuscan/templates/euscan/package.html deleted file mode 100644 index 874ab52..0000000 --- a/euscanwww/djeuscan/templates/euscan/package.html +++ /dev/null @@ -1,89 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load sub %} -{% load euscan_accounts_helpers %} - -{% block meta %} -{{ block.super }} - -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - {{ package|truncatechars:15 }} - -
  • -{% endblock %} - -{% block title %} -{{ block.super }} - {{ package.category }}/{{ package.name }} -{% endblock %} - -{% block content %} - -
    -

    A refresh request is in progress, please wait...

    -

    Queue position: {{ refresh_pos }}

    -
    - -

    - {{ package.category }}/{{ package.name }} - - {% if user.is_authenticated %} -
    -
    - - -
    - - - {% favourite_buttons "package" package.category package.name %} -
    - {% endif %} -

    - -{% include "euscan/_package_details.html" %} - -
    - -{% if user.is_authenticated %} - - - Report problems - - -{% endif %} - - - - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/problem.html b/euscanwww/djeuscan/templates/euscan/problem.html deleted file mode 100644 index 828b7ab..0000000 --- a/euscanwww/djeuscan/templates/euscan/problem.html +++ /dev/null @@ -1,57 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load sub %} -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - Report Problem: {{ package.category }}/{{ package.name }} -{% endblock %} - -{% block content %} - -{% if thanks_for_reporting %} -
    - Thanks! Your report has been sent to admins -
    -{% endif %} - -

    - Report Problem: {{ package.category }}/{{ package.name }} -

    - -{% include "euscan/_package_details.html" %} -
    -
    -
    -
    - -
    - {{ form.version }} - {{ form.version.errors.as_text }} -
    -
    -
    - -
    - {{ form.subject }} - {{ form.subject.errors.as_text }} -
    -
    -
    - -
    - {{ form.message }} - {{ form.message.errors.as_text }} -
    -
    - -
    -
    - -
    -
    -
    -
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/statistics.html b/euscanwww/djeuscan/templates/euscan/statistics.html deleted file mode 100644 index 3179e56..0000000 --- a/euscanwww/djeuscan/templates/euscan/statistics.html +++ /dev/null @@ -1,72 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block css %} -{{ block.super }} - -{% endblock %} - - -{% block javascript %} -{{ block.super }} - - - - -{% endblock %} - - -{% block content %} -

    Statistics

    - -
    - -

    Current statistics

    -pie versions -pie packages - -

    All time statistics

    - -packages weekly -packages monthly - -versions weekly -versions monthly - -
    - -

    Handlers

    - - - - - - - - - - {% for handler in handlers %} - - - - - - {% endfor %} - -
    Handler# of found versionsAverage confidence
    - - {{ handler.handler }} - - {{ handler.n }}{{ handler.avg_conf|floatformat:1 }}
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/statistics_handler.html b/euscanwww/djeuscan/templates/euscan/statistics_handler.html deleted file mode 100644 index ff073e3..0000000 --- a/euscanwww/djeuscan/templates/euscan/statistics_handler.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} -{{ block.super }} - Handler: {{ handler }} -{% endblock %} - -{% block content %} -

    - Handler: {{ handler }} -

    -{% packages packages %} - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/world.html b/euscanwww/djeuscan/templates/euscan/world.html deleted file mode 100644 index 6ba2791..0000000 --- a/euscanwww/djeuscan/templates/euscan/world.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "_base.html" %} - -{% load url from future %} - -{% block title %} -{{ block.super }} - World scan -{% endblock %} - -{% block content %} -

    Scan your packages

    - -
    - -

    Import your /var/lib/portage/world file

    - -
    {% csrf_token %} -{{ world_form.as_p }} - -
    - -
    - -

    Or just list some packages

    - -
    {% csrf_token %} -{{ packages_form.as_p }} - -
    - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/euscan/world_scan.html b/euscanwww/djeuscan/templates/euscan/world_scan.html deleted file mode 100644 index fa6d7b0..0000000 --- a/euscanwww/djeuscan/templates/euscan/world_scan.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load url from future %} -{% load djeuscan_helpers %} -{% load euscan_accounts_helpers %} - -{% block title %} -{{ block.super }} - World Scan -{% endblock %} - -{% block menu_feed %} -{{ block.super }} -
  • - feed - - World scan feed - -
  • -{% endblock %} - - -{% block content %} -

    - World scan: - {% if user.is_authenticated %} - - {% favourite_buttons "world" %} - - {% endif %} -

    - -{% packages packages %} - - - - - -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/_registration_base.html b/euscanwww/djeuscan/templates/registration/_registration_base.html deleted file mode 100644 index 9789436..0000000 --- a/euscanwww/djeuscan/templates/registration/_registration_base.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "_base.html" %} diff --git a/euscanwww/djeuscan/templates/registration/activate.html b/euscanwww/djeuscan/templates/registration/activate.html deleted file mode 100644 index 2e47513..0000000 --- a/euscanwww/djeuscan/templates/registration/activate.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}{% if account %}Activation complete{% else %}Activation problem{% endif %}{% endblock %} - -{% block content %} - {% if account %} - Thanks {{ account }}, activation complete! You may now login - using the username and password you set at registration. - {% else %} - Oops – it seems that your activation key is invalid. - Please check the url again. - {% endif %} -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/activation_complete.html b/euscanwww/djeuscan/templates/registration/activation_complete.html deleted file mode 100644 index 9d53ca9..0000000 --- a/euscanwww/djeuscan/templates/registration/activation_complete.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% block title %}Activation complete{% endblock %} -{% block content %} - Thanks, activation complete! You may now login - using the username and password you set at registration. -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/activation_email.txt b/euscanwww/djeuscan/templates/registration/activation_email.txt deleted file mode 100644 index 55b583b..0000000 --- a/euscanwww/djeuscan/templates/registration/activation_email.txt +++ /dev/null @@ -1,11 +0,0 @@ -You (or someone pretending to be you) have asked to register an account at -{{ site.name }}. If this wasn't you, please ignore this email -and your address will be removed from our records. - -To activate this account, please click the following link within the next -{{ expiration_days }} days: - -http://{{site.domain}}{% url 'registration_activate' activation_key=activation_key %} - -Sincerely, -{{ site.name }} Management diff --git a/euscanwww/djeuscan/templates/registration/activation_email_subject.txt b/euscanwww/djeuscan/templates/registration/activation_email_subject.txt deleted file mode 100644 index 13912aa..0000000 --- a/euscanwww/djeuscan/templates/registration/activation_email_subject.txt +++ /dev/null @@ -1 +0,0 @@ -Account registration for {{ site.name }} diff --git a/euscanwww/djeuscan/templates/registration/login.html b/euscanwww/djeuscan/templates/registration/login.html deleted file mode 100644 index 194dd04..0000000 --- a/euscanwww/djeuscan/templates/registration/login.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% load url from future %} -{% load i18n %} - -{% block content %} - - {% if form.errors %} -
    - Error: Your username and password didn't match. Please try again. -
    - {% endif %} - -

    - Login -

    - -
    - {% csrf_token %} - - - - - - - - - - - - - -
    {{ form.username.label_tag }}{{ form.username }}
    {{ form.password.label_tag }}{{ form.password }}
    - Forgot password - - -
    - -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_change_form.html b/euscanwww/djeuscan/templates/registration/password_change_form.html deleted file mode 100644 index c8ab089..0000000 --- a/euscanwww/djeuscan/templates/registration/password_change_form.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% load url from future %} - -{% block title %}Change password{% endblock %} - -{% block content %} -

    - Change password -

    - -
    - {% csrf_token %} - - {{ form }} - - - - -
    - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_complete.html b/euscanwww/djeuscan/templates/registration/password_reset_complete.html deleted file mode 100644 index 932dabf..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_complete.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}Password reset complete{% endblock %} - -{% block content %} - Your password has been reset! You may now log in. -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_confirm.html b/euscanwww/djeuscan/templates/registration/password_reset_confirm.html deleted file mode 100644 index 43aefec..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_confirm.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% block title %}Confirm password reset{% endblock %} - -{% block content %} -

    - Reset password -

    - -

    - Enter your new password below to reset your password: -

    -
    {% csrf_token %} - - {{ form.as_table }} - - - - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_done.html b/euscanwww/djeuscan/templates/registration/password_reset_done.html deleted file mode 100644 index a263a5f..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_done.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}Password reset{% endblock %} - -{% block content %} -

    - We have sent you an email with a link to reset your password. Please check - your email and click the link to continue. -

    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/password_reset_email.html b/euscanwww/djeuscan/templates/registration/password_reset_email.html deleted file mode 100644 index 54fefff..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_email.html +++ /dev/null @@ -1,16 +0,0 @@ -Greetings {% if user.get_full_name %}{{ user.get_full_name }}{% else %}{{ user }}{% endif %}, - -You are receiving this email because you (or someone pretending to be you) -requested that your password be reset on the {{ domain }} site. If you do not -wish to reset your password, please ignore this message. - -To reset your password, please click the following link, or copy and paste it -into your web browser: - -{{ protocol }}://{{ domain }}{% url auth_password_reset_confirm uid token %} - -Your username, in case you've forgotten: {{ user.username }} - - -Best regards, -{{ site_name }} Management diff --git a/euscanwww/djeuscan/templates/registration/password_reset_form.html b/euscanwww/djeuscan/templates/registration/password_reset_form.html deleted file mode 100644 index 7014401..0000000 --- a/euscanwww/djeuscan/templates/registration/password_reset_form.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %}Reset password{% endblock %} - -{% block content %} -

    - Reset password -

    - -

    - Forgot your password? Enter your email in the form below and we'll send you - instructions for creating a new one. -

    - -
    {% csrf_token %} - - {{ form }} - - - - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/registration_complete.html b/euscanwww/djeuscan/templates/registration/registration_complete.html deleted file mode 100644 index ae8dfcb..0000000 --- a/euscanwww/djeuscan/templates/registration/registration_complete.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends "registration/_registration_base.html" %} -{% block title %}Activation email sent{% endblock %} - -{% block content %} - An activation email has been sent. Please check your email and click on the link to activate your account. -{% endblock %} diff --git a/euscanwww/djeuscan/templates/registration/registration_form.html b/euscanwww/djeuscan/templates/registration/registration_form.html deleted file mode 100644 index c7858f4..0000000 --- a/euscanwww/djeuscan/templates/registration/registration_form.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "registration/_registration_base.html" %} - -{% block title %} - Register for an account -{% endblock %} - -{% block content %} -

    - Register -

    - -
    {% csrf_token %} - - {{ form }} - - - - -
    - -
    -
    -{% endblock %} diff --git a/euscanwww/djeuscan/templatetags/__init__.py b/euscanwww/djeuscan/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/djeuscan/templatetags/div.py b/euscanwww/djeuscan/templatetags/div.py deleted file mode 100644 index d9eb880..0000000 --- a/euscanwww/djeuscan/templatetags/div.py +++ /dev/null @@ -1,12 +0,0 @@ -from django import template - -register = template.Library() - - -def div(value, arg=None): - try: - return float(value) / float(arg) - except ZeroDivisionError: - return 0 - -register.filter('div', div) diff --git a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py b/euscanwww/djeuscan/templatetags/djeuscan_helpers.py deleted file mode 100644 index 427b421..0000000 --- a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py +++ /dev/null @@ -1,76 +0,0 @@ -from django import template -from django.conf import settings - -from euscan.version import is_version_type_stable, get_version_type - -register = template.Library() - - -@register.inclusion_tag('euscan/_packages.html', takes_context=True) -def packages(context, pkgs): - context['packages'] = pkgs - return context - - -@register.inclusion_tag('euscan/_package_cols.html', takes_context=True) -def package_cols(context, infos): - context['infos'] = infos - return context - - -@register.inclusion_tag('euscan/_package_bar.html', takes_context=True) -def package_bar(context, infos): - context['infos'] = infos - return context - - -@register.inclusion_tag('euscan/_categories_table.html') -def categories_table(categories, extras=False): - return { - "categories": categories, - "extras": extras, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.inclusion_tag('euscan/_herds_table.html') -def herds_table(herds, extras=False): - return { - "herds": herds, - "extras": extras, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.inclusion_tag('euscan/_maintainers_table.html') -def maintainers_table(maintainers, extras=False): - return { - "maintainers": maintainers, - "extras": extras, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.inclusion_tag('euscan/_overlays_table.html') -def overlays_table(overlays): - return { - "overlays": overlays, - "STATIC_URL": settings.STATIC_URL, - } - - -@register.filter -def is_stable(version_type): - return is_version_type_stable(version_type) - - -@register.filter -def version_type(version): - return get_version_type(version) - - -@register.filter -def ansi_to_html(text): - from ansi2html import Ansi2HTMLConverter - conv = Ansi2HTMLConverter(inline=True, linkify=True) - return conv.convert(text, full=False) diff --git a/euscanwww/djeuscan/templatetags/math_.py b/euscanwww/djeuscan/templatetags/math_.py deleted file mode 100644 index d9250b3..0000000 --- a/euscanwww/djeuscan/templatetags/math_.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.template import Library -import math - -register = Library() - -# taken from http://lybniz2.sourceforge.net/safeeval.html -# make a list of safe functions -math_safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', - 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', - 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', - 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] - -# use the list to filter the local namespace -math_safe_dict = dict([(k, getattr(math, k)) for k in math_safe_list]) - -# add any needed builtins back in. -math_safe_dict['abs'] = abs - - -@register.filter('math') -def math_(lopr, expr): - """Evals a math expression and returns it's value. - - "$1" is a placeholder. Insert "$1" in the expression where the value is - to be used. All math functions such as abs, sin, cos, floor are supported. - Example, - a. You will be redirected in {{ seconds|math:"$1 / 60.0" }} minutes - b. Square of {{ x }} is {{ x|math:"$1 * $1" }} - c. Square root of {{ x }} is {{ x|math:"sqrt($1)" }} - d. Given x = {{ x }}, (2 + x) * 6 = {{ x|math:"(2 + $1) * 6" }} - """ - if lopr: - return eval(expr.replace('$1', str(lopr)), {"__builtins__": None}, - math_safe_dict) - return '' diff --git a/euscanwww/djeuscan/templatetags/mul.py b/euscanwww/djeuscan/templatetags/mul.py deleted file mode 100644 index dbad300..0000000 --- a/euscanwww/djeuscan/templatetags/mul.py +++ /dev/null @@ -1,9 +0,0 @@ -from django import template - -register = template.Library() - - -def mul(value, arg=None): - return value * arg - -register.filter('mul', mul) diff --git a/euscanwww/djeuscan/templatetags/sub.py b/euscanwww/djeuscan/templatetags/sub.py deleted file mode 100644 index 47f52a1..0000000 --- a/euscanwww/djeuscan/templatetags/sub.py +++ /dev/null @@ -1,9 +0,0 @@ -from django import template - -register = template.Library() - - -def sub(value, arg=None): - return value - arg - -register.filter('sub', sub) diff --git a/euscanwww/djeuscan/templatetags/timedelta.py b/euscanwww/djeuscan/templatetags/timedelta.py deleted file mode 100644 index e7656ae..0000000 --- a/euscanwww/djeuscan/templatetags/timedelta.py +++ /dev/null @@ -1,24 +0,0 @@ -from django import template -from django.utils.timesince import timesince -from django.conf import settings -from django.utils.timezone import make_aware, get_default_timezone -from datetime import datetime - -register = template.Library() - - -def timedelta(value, arg=None): - if not value: - return '' - if arg: - cmp = arg - else: - cmp = datetime.now() - if settings.USE_TZ: - cmp = make_aware(cmp, get_default_timezone()) - if value > cmp: - return "in %s" % timesince(cmp, value) - else: - return "%s ago" % timesince(value, cmp) - -register.filter('timedelta', timedelta) diff --git a/euscanwww/djeuscan/tests/__init__.py b/euscanwww/djeuscan/tests/__init__.py deleted file mode 100644 index 78a1082..0000000 --- a/euscanwww/djeuscan/tests/__init__.py +++ /dev/null @@ -1,57 +0,0 @@ -from urllib import urlencode - -from django.test import TestCase -from django.test.client import Client -from django.core.urlresolvers import reverse - -from djeuscan.tests.euscan_factory import UserFactory - - -class SystemTestCase(TestCase): - """ - Base class for system tests - """ - fixtures = ["test_data.json"] - - def setUp(self): - self.client = Client() - - def get(self, url_name, *args, **kwargs): - param = kwargs.pop("param", None) - if param: - url = "%s?%s" % (reverse(url_name, args=args, kwargs=kwargs), - urlencode(param)) - else: - url = reverse(url_name, args=args, kwargs=kwargs) - return self.client.get(url) - - def post(self, url_name, *args, **kwargs): - data = kwargs.pop("data", {}) - url = reverse(url_name, args=args, kwargs=kwargs) - return self.client.post(url, data) - - def login(self): - user = UserFactory.build() - user.set_password("pass") - user.save() - return Login(self, user.username, "pass") - - -class Login(object): - def __init__(self, testcase, user, password): - self.testcase = testcase - success = testcase.client.login(username=user, password=password) - self.testcase.assertTrue( - success, - "login with username=%r, password=%r failed" % (user, password) - ) - - def __enter__(self): - pass - - def __exit__(self, *args): - self.testcase.client.logout() - -from test_models import * -from test_views import * -from test_charts import * diff --git a/euscanwww/djeuscan/tests/euscan_factory.py b/euscanwww/djeuscan/tests/euscan_factory.py deleted file mode 100644 index 0a90874..0000000 --- a/euscanwww/djeuscan/tests/euscan_factory.py +++ /dev/null @@ -1,147 +0,0 @@ -import random -from string import letters -from datetime import datetime -from collections import defaultdict - -from django.contrib.auth.models import User -from django.db import IntegrityError - -import factory - -from djeuscan.models import Herd, Maintainer, Package, Version, EuscanResult, \ - Category, Overlay - - -class UserFactory(factory.Factory): - FACTORY_FOR = User - - username = factory.Sequence(lambda n: 'user' + n) - - -def random_string(length=None): - if length is None: - length = random.randint(1, 30) - return "".join([random.choice(letters) for _ in range(length)]) - - -class HerdFactory(factory.Factory): - FACTORY_FOR = Herd - - herd = factory.LazyAttribute(lambda a: random_string()) - email = factory.LazyAttribute(lambda a: "%s@example.com" % a.herd) - - -class MaintainerFactory(factory.Factory): - FACTORY_FOR = Maintainer - - name = factory.LazyAttribute(lambda a: random_string()) - email = factory.LazyAttribute(lambda a: "%s@example.com" % a.name) - - -class CategoryFactory(factory.Factory): - FACTORY_FOR = Category - - name = factory.LazyAttribute(lambda a: random_string()) - - -class OverlayFactory(factory.Factory): - FACTORY_FOR = Overlay - - name = factory.LazyAttribute(lambda a: random_string()) - - -class PackageFactory(factory.Factory): - FACTORY_FOR = Package - - category = factory.LazyAttribute( - lambda a: "%s-%s" % (random_string(), random_string()) - ) - name = factory.LazyAttribute(lambda a: random_string()) - description = "This is a test package" - homepage = "http://testpackage.com" - - @classmethod - def _prepare(cls, create, **kwargs): - package = super(PackageFactory, cls)._prepare(create, **kwargs) - category = kwargs.pop('category', None) - if create: - CategoryFactory.create(name=category) - else: - CategoryFactory.build(name=category) - return package - - -class VersionFactory(factory.Factory): - FACTORY_FOR = Version - - package = factory.LazyAttribute(lambda a: PackageFactory()) - slot = "1" - revision = "1" - version = "0.1" - packaged = True - overlay = "gentoo" - urls = "http://packageurl.com" - - @classmethod - def _prepare(cls, create, **kwargs): - version = super(VersionFactory, cls)._prepare(create, **kwargs) - overlay = kwargs.pop('overlay', None) - try: - if create: - OverlayFactory.create(name=overlay) - else: - OverlayFactory.build(name=overlay) - except IntegrityError: - pass - return version - - -class EuscanResultFactory(factory.Factory): - FACTORY_FOR = EuscanResult - - package = factory.LazyAttribute(lambda a: PackageFactory()) - datetime = datetime.now() - result = "this is the result" - - -def setup_maintainers(): - maintainers = [MaintainerFactory.create() for _ in range(10)] - packages = [] - for i in range(0, 10, 2): - p = PackageFactory.create() - p.maintainers.add(maintainers[i]) - p.maintainers.add(maintainers[i + 1]) - packages.append(p) - return maintainers, packages - - -def setup_categories(): - packages = [PackageFactory.create() for _ in range(10)] - categories = [p.category for p in packages] - return categories, packages - - -def setup_herds(): - herds = [HerdFactory.create() for _ in range(10)] - packages = [] - - for i in range(0, 10, 2): - p = PackageFactory.create() - p.herds.add(herds[i]) - p.herds.add(herds[i + 1]) - packages.append(p) - return herds, packages - - -def setup_overlays(): - overlays = [random_string() for _ in range(3)] - packages = defaultdict(list) - - for _ in range(3): - package = PackageFactory.create() - for overlay in overlays: - VersionFactory.create(package=package, - overlay=overlay) - packages[overlay].append(package) - - return overlays, packages diff --git a/euscanwww/djeuscan/tests/test_charts.py b/euscanwww/djeuscan/tests/test_charts.py deleted file mode 100644 index e50dd8b..0000000 --- a/euscanwww/djeuscan/tests/test_charts.py +++ /dev/null @@ -1,102 +0,0 @@ -from djeuscan.tests import SystemTestCase -from djeuscan.tests.euscan_factory import MaintainerFactory, HerdFactory, \ - PackageFactory - - -class ChartTests(SystemTestCase): - """ - Test charts - """ - - url = "chart" - args = [] - kwargs = {} - - def test_statistics(self): - response = self.get("statistics") - self.assertEqual(response.status_code, 200) - - def test_pie_versions(self): - response = self.get(self.url, chart="pie-versions", - *self.args, **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_pie_packages(self): - response = self.get(self.url, chart="pie-packages", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_packages(self): - response = self.get(self.url, chart="packages", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_packages_options(self): - response = self.get(self.url, chart="packages-small", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="packages-weekly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="packages-monthly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="packages-yearly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_packages_option_incorrect(self): - response = self.get(self.url, chart="packages-trololol", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 404) - - def test_versions(self): - response = self.get(self.url, chart="versions", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_versions_options(self): - response = self.get(self.url, chart="versions-small", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="versions-weekly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="versions-monthly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - response = self.get(self.url, chart="versions-yearly", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 200) - - def test_versions_option_incorrect(self): - response = self.get(self.url, chart="versions-trololol", *self.args, - **self.kwargs) - self.assertEqual(response.status_code, 404) - - -class CategoryChartTests(ChartTests): - def setUp(self): - super(CategoryChartTests, self).setUp() - self.url = "chart_category" - self.kwargs = {"category": PackageFactory.create().category} - - -class HerdChartTests(ChartTests): - def setUp(self): - super(HerdChartTests, self).setUp() - self.url = "chart_herd" - self.kwargs = {"herd": HerdFactory.create().herd} - - -class MaintainerChartTests(ChartTests): - def setUp(self): - super(MaintainerChartTests, self).setUp() - self.url = "chart_maintainer" - self.kwargs = {"maintainer_id": MaintainerFactory.create().pk} diff --git a/euscanwww/djeuscan/tests/test_models.py b/euscanwww/djeuscan/tests/test_models.py deleted file mode 100644 index 3dfb837..0000000 --- a/euscanwww/djeuscan/tests/test_models.py +++ /dev/null @@ -1,105 +0,0 @@ -""" -tests for models -""" - -from datetime import datetime - -from django.test import TestCase -from django.db import IntegrityError -from django.core.exceptions import ValidationError -from django.utils.timezone import utc - -from djeuscan.models import Package, EuscanResult -from djeuscan.tests.euscan_factory import VersionFactory, PackageFactory, \ - EuscanResultFactory, setup_maintainers, setup_herds, setup_categories, \ - setup_overlays - - -class VersionModelTests(TestCase): - def test_creation(self): - package = PackageFactory.build() - version = VersionFactory.build(package=package) - self.assertEqual(version.package, package) - - def test_not_allowed_creation(self): - package = PackageFactory.create() - VersionFactory.create(package=package) - - with self.assertRaises((IntegrityError, ValidationError)): - VersionFactory.create(package=package) - - -class PackageModelTests(TestCase): - def test_homepages(self): - homepage = "http://gentoo.org http://mypackage.com" - package = PackageFactory.build(homepage=homepage) - self.assertEqual(package.homepages, - ["http://gentoo.org", "http://mypackage.com"]) - - def test_for_maintainer(self): - maintainers, packages = setup_maintainers() - maintainer = maintainers[0] - self.assertEqual( - list(Package.objects.for_maintainer(maintainer)), - packages[:1] - ) - - def test_for_herd(self): - herds, packages = setup_herds() - herd = herds[0] - self.assertEqual( - list(Package.objects.for_herd(herd)), - packages[:1] - ) - - def test_for_category(self): - categories, packages = setup_categories() - category = categories[0] - self.assertEqual( - list(Package.objects.for_category(category)), - packages[:1] - ) - - def test_for_overlay(self): - overlays, packages = setup_overlays() - overlay = overlays[0] - - package_ids = [p.pk for p in packages[overlay]] - for package in Package.objects.for_overlay(overlay): - self.assertTrue(package["id"] in package_ids) - - def test_maintainers(self): - maintainers, packages = setup_maintainers() - maintainer_ids = [m.pk for m in maintainers] - for maintainer in Package.objects.maintainers(): - self.assertTrue(maintainer["maintainers__id"] in maintainer_ids) - - def test_herds(self): - herds, packages = setup_herds() - herd_names = [h.herd for h in herds] - for herd in Package.objects.herds(): - self.assertTrue(herd["herds__herd"] in herd_names) - - def test_categories(self): - categories, packages = setup_categories() - cat_names = [c["category"] for c in Package.objects.categories()] - for category in categories: - self.assertTrue(category in cat_names) - - def test_overlays(self): - overlays, packages = setup_overlays() - overlay_names = Package.objects.overlays() - for overlay in overlays: - self.assertTrue(overlay in overlay_names) - - -class EuscanResultModelTests(TestCase): - def test_lastest(self): - result1 = EuscanResultFactory.create( - datetime=datetime(2012, 04, 01, 12, 0, 0, 0, utc) - ) - result2 = EuscanResultFactory.create( - datetime=datetime(2012, 01, 01, 12, 0, 0, 0, utc) - ) - self.assertEqual(result1, EuscanResult.objects.latest()) - self.assertNotEqual(result2, EuscanResult.objects.latest()) diff --git a/euscanwww/djeuscan/tests/test_views.py b/euscanwww/djeuscan/tests/test_views.py deleted file mode 100644 index 4917d9d..0000000 --- a/euscanwww/djeuscan/tests/test_views.py +++ /dev/null @@ -1,305 +0,0 @@ -import StringIO - -try: - from BeautifulSoup import BeautifulSoup -except ImportError: - from bs4 import BeautifulSoup - -from euscan_accounts.helpers import get_profile - -from djeuscan.tests import SystemTestCase -from djeuscan.tests.euscan_factory import PackageFactory, setup_maintainers, \ - setup_herds, setup_categories, setup_overlays - - -class PagesTest(SystemTestCase): - """ - Test main pages - """ - - def test_index(self): - response = self.get("index") - self.assertEqual(response.status_code, 200) - - def test_world(self): - response = self.get("world") - self.assertEqual(response.status_code, 200) - - def test_about(self): - response = self.get("about") - self.assertEqual(response.status_code, 200) - - def test_global_feed(self): - response = self.get("global_feed") - self.assertEqual(response.status_code, 200) - - def test_api(self): - response = self.get("api") - self.assertEqual(response.status_code, 200) - - def test_profile(self): - response = self.get("accounts_index") - self.assertEqual(response.status_code, 302) - - with self.login(): - response = self.get("accounts_index") - self.assertEqual(response.status_code, 200) - - -class PackageTests(SystemTestCase): - def setUp(self): - super(PackageTests, self).setUp() - self.package = PackageFactory.create() - - def test_package(self): - response = self.get("package", category=self.package.category, - package=self.package.name) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - response = self.get("package", category=self.package.category, - package=self.package.name) - self.assertEqual(response.status_code, 200) - - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("package", category=self.package.category, - package=self.package.name) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).categories.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_package", category=self.package.category, - package=self.package.name) - - self.assertEquals(get_profile(user).packages.count(), 1) - - response = self.get("accounts_packages") - self.assertEqual(response.status_code, 200) - - self.assertIn(self.package.name, response.content) - - self.post("unfavourite_package", category=self.package.category, - package=self.package.name) - self.assertEquals(get_profile(user).packages.count(), 0) - - -class SectionTests(SystemTestCase): - def _check_table(self, response, items, attr=None): - soup = BeautifulSoup(response.content) - rows = soup.findAll("tr") - - # the -1 is for the table heading - self.assertEqual(len(rows) - 1, len(items)) - - for item in items: - if attr: - item_str = getattr(item, attr) - else: - item_str = item - self.assertTrue(item_str in response.content) - - -class CategoriesTests(SectionTests): - def setUp(self): - super(CategoriesTests, self).setUp() - self.categories, self.packages = setup_categories() - - def test_categories(self): - response = self.get("categories") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.categories) - - def test_category(self): - category = self.categories[0] - response = self.get("category", category=category) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[:1], attr="name") - - def test_category_feed(self): - category = self.categories[0] - response = self.get("category_feed", category=category) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - category = self.categories[0] - - response = self.get("category", category=category) - - self.assertEqual(response.status_code, 200) - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("category", category=category) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).categories.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_category", category=category) - - self.assertEquals(get_profile(user).categories.count(), 1) - - response = self.get("accounts_categories") - self.assertEqual(response.status_code, 200) - - self._check_table(response, [category]) - - self.post("unfavourite_category", category=category) - - self.assertEquals(get_profile(user).categories.count(), 0) - - -class HerdsTests(SectionTests): - def setUp(self): - super(HerdsTests, self).setUp() - self.herds, self.packages = setup_herds() - - def test_herds(self): - response = self.get("herds") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.herds, attr="herd") - - def test_herd(self): - herd = self.herds[0] - response = self.get("herd", herd=herd.herd) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[:1], attr="name") - - def test_herd_feed(self): - herd = self.herds[0] - response = self.get("herd_feed", herd=herd.herd) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - herd = self.herds[0] - - response = self.get("herd", herd=herd.herd) - self.assertEqual(response.status_code, 200) - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("herd", herd=herd.herd) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).herds.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_herd", herd=herd.herd) - - self.assertEquals(get_profile(user).herds.count(), 1) - - response = self.get("accounts_herds") - self.assertEqual(response.status_code, 200) - - self._check_table(response, [herd], attr="herd") - - self.post("unfavourite_herd", herd=herd.herd) - self.assertEquals(get_profile(user).herds.count(), 0) - - -class MaintainersTests(SectionTests): - def setUp(self): - super(MaintainersTests, self).setUp() - self.maintainers, self.packages = setup_maintainers() - - def test_maintainers(self): - response = self.get("maintainers") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.maintainers, attr="name") - - def test_maintainer(self): - maintainer = self.maintainers[0] - response = self.get("maintainer", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[:1], attr="name") - - def test_maintainer_feed(self): - maintainer = self.maintainers[0] - response = self.get("maintainer_feed", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - - def test_favourite(self): - maintainer = self.maintainers[0] - - response = self.get("maintainer", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - self.assertNotIn("Watch", response.content) - - with self.login(): - response = self.get("maintainer", maintainer_id=maintainer.pk) - self.assertEqual(response.status_code, 200) - - user = response.context["user"] - self.assertEquals(get_profile(user).maintainers.count(), 0) - - self.assertIn("Watch", response.content) - self.post("favourite_maintainer", maintainer_id=maintainer.pk) - - self.assertEquals(get_profile(user).maintainers.count(), 1) - - response = self.get("accounts_maintainers") - self.assertEqual(response.status_code, 200) - - self._check_table(response, [maintainer], attr="name") - - self.post("unfavourite_maintainer", maintainer_id=maintainer.pk) - - self.assertEquals(get_profile(user).maintainers.count(), 0) - - -class OverlayTests(SectionTests): - def setUp(self): - super(OverlayTests, self).setUp() - self.overlays, self.packages = setup_overlays() - - def test_overlays(self): - response = self.get("overlays") - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.overlays) - - def test_overlay(self): - overlay = self.overlays[0] - response = self.get("overlay", overlay=overlay) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages[overlay], attr="name") - - -class WorldScanTests(SectionTests): - def setUp(self): - super(WorldScanTests, self).setUp() - for _ in range(3): - PackageFactory.create() - self.packages = [PackageFactory.create().name for _ in range(3)] - - def test_world_scan_packages(self): - response = self.post("world_scan", - data={"packages": "\n".join(self.packages)}) - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages) - - def test_world_scan_world(self): - world_file = StringIO.StringIO() - world_file.write("\n".join(self.packages)) - world_file.name = "world" - world_file.read = world_file.getvalue - - response = self.post("world_scan", data={"world": world_file}) - - self.assertEqual(response.status_code, 200) - - self._check_table(response, self.packages) diff --git a/euscanwww/djeuscan/urls.py b/euscanwww/djeuscan/urls.py deleted file mode 100644 index be2e33f..0000000 --- a/euscanwww/djeuscan/urls.py +++ /dev/null @@ -1,125 +0,0 @@ -from django.conf.urls import url, patterns, include -from django.contrib.auth.decorators import user_passes_test - -from djcelery.views import apply as apply_task -from djeuscan.views import registered_tasks - -from euscan_accounts.views import favourite_package, unfavourite_package, \ - favourite_category, unfavourite_category, favourite_herd, \ - unfavourite_herd, favourite_maintainer, unfavourite_maintainer, \ - favourite_overlay, unfavourite_overlay, favourite_world, unfavourite_world - -from djeuscan.feeds import PackageFeed, CategoryFeed, HerdFeed, \ - MaintainerFeed, GlobalFeed, WorldScanFeed, StabilizationCandidatesFeed - -admin_required = user_passes_test(lambda u: u.is_superuser) - - -package_patterns = patterns('djeuscan.views', - url(r'^$', 'package', name="package"), - url(r'^feed/$', PackageFeed(), name='package_feed'), - url(r'^favourite/$', favourite_package, name="favourite_package"), - url(r'^unfavourite/$', unfavourite_package, name="unfavourite_package"), - url(r'^refresh$', "refresh_package", name="refresh_package"), - url(r'^problem$', 'problem', name="problem"), -) - -files_patterns = patterns('djeuscan.views', - url(r'^(?P[\w+][\w+.-]*)/(?P.+).ebuild$', - "package_version_ebuild", - name="package_version_ebuild"), - url(r'^(?P[\w+][\w+.-]*)/(?P[\w+][\w+.-]*)/' - r'(?P[\w+][\w+.-]*)/metadata.xml$', - "package_metadata", - name="package_metadata"), -) - -categories_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'category', name="category"), - url(r'^feed/$', CategoryFeed(), name='category_feed'), - url(r'^charts/(?P[\w\-]+).png$', 'chart_category', - name="chart_category"), - url(r'^favourite/$', favourite_category, name="favourite_category"), - url(r'^unfavourite/$', unfavourite_category, - name="unfavourite_category"), -) - -herds_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'herd', name="herd"), - url(r'^feed/$', HerdFeed(), name='herd_feed'), - url(r'^charts/(?P[\w\-]+).png$', 'chart_herd', name="chart_herd"), - url(r'^favourite/$', favourite_herd, name="favourite_herd"), - url(r'^unfavourite/$', unfavourite_herd, name="unfavourite_herd"), -) - -maintainers_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'maintainer', name="maintainer"), - url(r'^feed/$', MaintainerFeed(), name='maintainer_feed'), - url(r'^charts/(?P[\w\-]+).png$', 'chart_maintainer', - name="chart_maintainer"), - url(r'^favourite/$', favourite_maintainer, name="favourite_maintainer"), - url(r'^unfavourite/$', unfavourite_maintainer, - name="unfavourite_maintainer"), -) - -overlays_patterns = patterns('djeuscan.views', - url(r'^(?:view/)?$', 'overlay', name="overlay"), - url(r'^favourite/$', favourite_overlay, name="favourite_overlay"), - url(r'^unfavourite/$', unfavourite_overlay, name="unfavourite_overlay"), -) - -tasks_patterns = patterns('djeuscan.views', - url(r'^registered_tasks/$', admin_required(registered_tasks), - name="registered_tasks"), - url(r'^apply/(?P.*)/$', admin_required(apply_task), - name="apply_task"), -) - - -urlpatterns = patterns('djeuscan.views', - # Global stuff - url(r'^api/', include('djeuscan.api.urls')), - - url(r'^$', 'index', name="index"), - url(r'^feed/$', GlobalFeed(), name='global_feed'), - url(r'^feed/stabilization_candidates$', StabilizationCandidatesFeed(), - name='stabilization_candidates_feed'), - url(r'^about/$', 'about', name="about"), - url(r'^about/api$', 'api', name="api"), - url(r'^about/feeds$', 'feeds', name="feeds"), - url(r'^about/config$', 'config', name="config"), - url(r'^statistics/$', 'statistics', name="statistics"), - url(r'^statistics/handlers/(?P[^/]+)/$', 'statistics_handler', - name="statistics_handler"), - url(r'^statistics/charts/(?P[\w\-]+).png$', 'chart', name="chart"), - url(r'^world/$', 'world', name="world"), - url(r'^world/scan/$', 'world_scan', name="world_scan"), - url(r'^world/scan/feed$', WorldScanFeed(), name="world_scan_feed"), - url(r'^world/favourite/$', favourite_world, name="favourite_world"), - url(r'^world/unfavourite/$', unfavourite_world, - name="unfavourite_world"), - - # Real data - url(r'^categories/$', 'categories', name="categories"), - url(r'^categories/(?P[\w+][\w+.-]*)/', - include(categories_patterns)), - - url(r'^herds/$', 'herds', name="herds"), - url(r'^herds/(?P[\@\{\}\w+.-]+)/', include(herds_patterns)), - - url(r'^maintainers/$', 'maintainers', name="maintainers"), - url(r'^maintainers/(?P\d+)/', - include(maintainers_patterns)), - url(r'^maintainers/(?P[^/]+)/', - include(maintainers_patterns)), - - url(r'^overlays/$', 'overlays', name="overlays"), - url(r'^overlays/(?P[\w+][\w+.-]*)/', include(overlays_patterns)), - - url(r'^package/(?P[\w+][\w+.-]*)/(?P[\w+][\w+.-]*)/', - include(package_patterns)), - - url(r'^files/', include(files_patterns)), - - url(r'^tasks/', include(tasks_patterns)), -) diff --git a/euscanwww/djeuscan/views.py b/euscanwww/djeuscan/views.py deleted file mode 100644 index fc10976..0000000 --- a/euscanwww/djeuscan/views.py +++ /dev/null @@ -1,488 +0,0 @@ -""" Views """ - -import inspect -from annoying.decorators import render_to, ajax_request - -from portage.versions import catpkgsplit - -from django.http import HttpResponse, HttpResponseNotFound -from django.core.urlresolvers import reverse -from django.shortcuts import get_object_or_404, redirect -from django.contrib.auth.decorators import login_required -from django.views.decorators.http import require_POST -from django.db import models - -from djeuscan.helpers import version_key, packages_from_names, \ - get_maintainer_or_404, get_make_conf, get_layman_repos -from djeuscan.models import Version, Package, Herd, Maintainer, EuscanResult, \ - VersionLog, RefreshPackageQuery, ProblemReport, Category, Overlay -from djeuscan.forms import WorldForm, PackagesForm, ProblemReportForm -from djeuscan.tasks import admin_tasks -from djeuscan import charts - -from euscan_accounts.helpers import get_profile - - -@render_to('euscan/index.html') -def index(request): - context = { - 'n_packaged': Package.objects.n_packaged(), - 'n_overlay': Package.objects.n_overlay(), - 'n_versions': Package.objects.n_versions(), - 'n_upstream': Package.objects.n_upstream(), - 'n_packages': Package.objects.count(), - 'n_herds': Herd.objects.count(), - 'n_maintainers': Maintainer.objects.count(), - } - try: - context['last_scan'] = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - context['last_scan'] = None - - return context - - -@render_to('euscan/logs.html') -def logs(request): - return {} - - -@render_to('euscan/categories.html') -def categories(request): - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'categories': Package.objects.categories(), 'last_scan': last_scan} - - -@render_to('euscan/category.html') -def category(request, category): - packages = Package.objects.for_category(category, last_versions=True) - - if not packages: - return HttpResponseNotFound() - - try: - last_scan = \ - EuscanResult.objects.for_category(category).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - try: - category = Category.objects.get(name=category) - favourited = category in get_profile(request.user).categories.all() - except Category.DoesNotExist: - pass - - return {'category': category, 'packages': packages, 'last_scan': last_scan, - 'favourited': favourited} - - -@render_to('euscan/herds.html') -def herds(request): - herds = Package.objects.herds() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'herds': herds, 'last_scan': last_scan} - - -@render_to('euscan/herd.html') -def herd(request, herd): - herd = get_object_or_404(Herd, herd=herd) - packages = Package.objects.for_herd(herd, last_versions=True) - - try: - last_scan = EuscanResult.objects.for_herd(herd).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - if herd in get_profile(request.user).herds.all(): - favourited = True - - return {'herd': herd, 'packages': packages, "last_scan": last_scan, - 'favourited': favourited} - - -@render_to('euscan/maintainers.html') -def maintainers(request): - maintainers = Package.objects.maintainers() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'maintainers': maintainers, 'last_scan': last_scan} - - -@render_to('euscan/maintainer.html') -def maintainer(request, maintainer_id=None, maintainer_email=None): - maintainer = get_maintainer_or_404(maintainer_id, maintainer_email) - packages = Package.objects.for_maintainer(maintainer, last_versions=True) - - try: - last_scan = \ - EuscanResult.objects.for_maintainer(maintainer).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - if maintainer in get_profile(request.user).maintainers.all(): - favourited = True - - return {'maintainer': maintainer, 'packages': packages, - 'last_scan': last_scan, 'favourited': favourited} - - -@render_to('euscan/overlays.html') -def overlays(request): - overlays = Package.objects.overlays() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - return {'overlays': overlays, 'last_scan': last_scan} - - -@render_to('euscan/overlay.html') -def overlay(request, overlay): - packages = Package.objects.for_overlay(overlay) - if not packages: - return HttpResponseNotFound() - - try: - last_scan = EuscanResult.objects.latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - try: - overlay = Overlay.objects.get(name=overlay) - favourited = overlay in get_profile(request.user).overlays.all() - except Overlay.DoesNotExist: - pass - - return {'overlay': overlay, 'packages': packages, 'last_scan': last_scan, - 'favourited': favourited} - - -@render_to('euscan/package.html') -def package(request, category, package): - package = get_object_or_404(Package, category=category, name=package) - packaged = Version.objects.filter(package=package, packaged=True) - upstream = Version.objects.filter(package=package, packaged=False) - - packaged = sorted(packaged, key=version_key) - upstream = sorted(upstream, key=version_key) - - log = EuscanResult.objects.filter(package=package).\ - order_by('-datetime')[:1] - log = log[0] if log else None - vlog = VersionLog.objects.for_package(package, order=True) - - try: - last_scan = EuscanResult.objects.for_package(package).latest().datetime - except EuscanResult.DoesNotExist: - last_scan = None - - favourited = False - if request.user.is_authenticated(): - if package in get_profile(request.user).packages.all(): - favourited = True - - try: - refresh_query = RefreshPackageQuery.objects.get(package=package) - except RefreshPackageQuery.DoesNotExist: - refresh_requested = False - refresh_pos = None - else: - refresh_requested = request.user in refresh_query.users.all() - refresh_pos = refresh_query.position - - return { - 'package': package, - 'packaged': packaged, - 'upstream': upstream, - 'vlog': vlog, - 'log': log, - 'msg': log.messages if log else "", - 'last_scan': last_scan, - 'favourited': favourited, - 'refresh_requested': refresh_requested, - 'refresh_pos': refresh_pos, - } - - -def package_metadata(request, overlay, category, package): - package = get_object_or_404(Package, category=category, name=package) - - versions = Version.objects.filter(package=package, overlay=overlay) - if len(versions) == 0: - return HttpResponseNotFound() - - # XXX: Kinda ugly, it assumes that every version with the same overlay - # has the same metadata path - version = versions[0] - - content = "" - if version.metadata_path: - try: - with open(version.metadata_path) as meta_file: - content = meta_file.read() - except IOError: - return HttpResponseNotFound() - else: - return HttpResponseNotFound() - return HttpResponse(content, content_type="text/plain") - - -def package_version_ebuild(request, overlay, cpv): - category, package, version, revision = catpkgsplit(cpv) - pkg = get_object_or_404(Package, category=category, name=package) - obj = get_object_or_404(Version, package=pkg, version=version, - revision=revision, overlay=overlay) - - if obj.ebuild_path: - try: - with open(obj.ebuild_path) as ebuild_file: - content = ebuild_file.read() - except IOError: - return HttpResponseNotFound() - else: - return HttpResponseNotFound() - return HttpResponse(content, content_type="text/plain") - - -@login_required -@render_to('euscan/problem.html') -def problem(request, category, package): - package = get_object_or_404(Package, category=category, name=package) - packaged = Version.objects.filter(package=package, packaged=True) - upstream = Version.objects.filter(package=package, packaged=False) - - log = EuscanResult.objects.filter(package=package).\ - order_by('-datetime')[:1] - log = log[0] if log else None - - thanks_for_reporting = False - - if request.method == "POST": - form = ProblemReportForm(package, request.POST) - if form.is_valid(): - ProblemReport( - package=package, - version=form.cleaned_data["version"], - subject=form.cleaned_data["subject"], - message=form.cleaned_data["message"], - ).save() - thanks_for_reporting = True - else: - form = ProblemReportForm(package) - - return { - 'form': form, - 'thanks_for_reporting': thanks_for_reporting, - 'package': package, - 'packaged': packaged, - 'upstream': upstream, - 'msg': log.messages if log else "", - } - - -@render_to('euscan/world.html') -def world(request): - world_form = WorldForm() - packages_form = PackagesForm() - - return { - 'world_form': world_form, - 'packages_form': packages_form - } - - -@render_to('euscan/world_scan.html') -def world_scan(request): - if 'world' in request.FILES: - data = request.FILES['world'].read() - elif 'packages' in request.POST: - data = request.POST['packages'] - else: - data = "" - - packages = packages_from_names(data) - packages_ids = [p.pk for p in packages] - - favourited = False - if len(packages) > 0 and request.user.is_authenticated(): - profile = get_profile(request.user) - if len(packages) == len(profile.packages.filter(id__in=packages_ids)): - favourited = True - - return { - 'packages': packages, - 'packages_ids': packages_ids, - 'favourited': favourited - } - - -@render_to("euscan/about.html") -def about(request): - return {} - - -@render_to("euscan/api.html") -def api(request): - return {} - - -@render_to("euscan/feeds.html") -def feeds(request): - return {} - - -@render_to("euscan/config.html") -def config(request): - from euscan import CONFIG, BLACKLIST_VERSIONS, BLACKLIST_PACKAGES, \ - SCANDIR_BLACKLIST_URLS, BRUTEFORCE_BLACKLIST_PACKAGES, \ - BRUTEFORCE_BLACKLIST_URLS, ROBOTS_TXT_BLACKLIST_DOMAINS - euscan_config = { - "CONFIG": CONFIG, - "BLACKLIST_VERSIONS": BLACKLIST_VERSIONS, - "BLACKLIST_PACKAGES": BLACKLIST_PACKAGES, - "SCANDIR_BLACKLIST_URLS": SCANDIR_BLACKLIST_URLS, - "BRUTEFORCE_BLACKLIST_PACKAGES": BRUTEFORCE_BLACKLIST_PACKAGES, - "BRUTEFORCE_BLACKLIST_URLS": BRUTEFORCE_BLACKLIST_URLS, - "ROBOTS_TXT_BLACKLIST_DOMAINS": ROBOTS_TXT_BLACKLIST_DOMAINS, - } - make_conf = get_make_conf() - layman_repos = get_layman_repos() - - return { - "euscan_config": euscan_config, - "make_conf": make_conf, - "layman_repos": layman_repos, - } - - -@render_to("euscan/statistics.html") -def statistics(request): - handlers = ( - Version.objects.values("handler") - .filter(overlay="") - .annotate(n=models.Count("handler"), - avg_conf=models.Avg("confidence")) - ) - for i in xrange(len(handlers)): - if not handlers[i]['handler']: - handlers[i]['handler'] = "unknown" - return {"handlers": handlers} - - -@render_to("euscan/statistics_handler.html") -def statistics_handler(request, handler): - if handler == "unknown": - handler = "" - packages = Package.objects.for_handler(handler) - return {"handler": handler, "packages": packages} - - -def chart(request, **kwargs): - from django.views.static import serve - - chart = kwargs['chart'] if 'chart' in kwargs else None - - if 'maintainer_id' in kwargs or 'maintainer_email' in kwargs: - kwargs['maintainer'] = get_maintainer_or_404( - kwargs.get('maintainer_id'), - kwargs.get('maintainer_email') - ) - if 'herd' in kwargs: - kwargs['herd'] = get_object_or_404(Herd, herd=kwargs['herd']) - - for kw in ('-small', '-weekly', '-monthly', '-yearly'): - if chart.endswith(kw): - if kw in ('-weekly', '-monthly', '-yearly'): - kwargs['period'] = kw - kwargs[kw] = True - chart = chart[:-len(kw)] - - if chart == 'pie-packages': - path = charts.pie_packages(**kwargs) - elif chart == 'pie-versions': - path = charts.pie_versions(**kwargs) - elif chart == 'packages': - path = charts.packages(**kwargs) - elif chart == 'versions': - path = charts.versions(**kwargs) - else: - return HttpResponseNotFound() - - return serve(request, path, document_root=charts.CHARTS_ROOT) - - -def chart_maintainer(request, **kwargs): - return chart(request, **kwargs) - - -def chart_herd(request, **kwargs): - return chart(request, **kwargs) - - -def chart_category(request, **kwargs): - return chart(request, **kwargs) - - -@ajax_request -def registered_tasks(request): - data = {} - for task in admin_tasks: - argspec = inspect.getargspec(task.run) - data[task.name] = { - "args": argspec.args, - "defaults": argspec.defaults, - "default_types": None - } - if argspec.defaults is not None: - data[task.name].update({ - "defaults_types": [type(x).__name__ for x in argspec.defaults] - }) - return {"tasks": data} - - -@login_required -@require_POST -@ajax_request -def refresh_package(request, category, package): - pkg = get_object_or_404(Package, category=category, name=package) - - obj, created = RefreshPackageQuery.objects.get_or_create(package=pkg) - - if request.user in \ - RefreshPackageQuery.objects.get(package=pkg).users.all(): - return {"result": "failure"} - - obj.users.add(request.user) - if not created: - obj.priority += 1 - obj.save() - if created: - from djeuscan.tasks import consume_refresh_queue - consume_refresh_queue.delay() - if "nojs" in request.POST: - return redirect(reverse("package", args=(category, package))) - else: - return {"result": "success", "position": obj.position} diff --git a/euscanwww/euscan_accounts/__init__.py b/euscanwww/euscan_accounts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_accounts/admin.py b/euscanwww/euscan_accounts/admin.py deleted file mode 100644 index 453650a..0000000 --- a/euscanwww/euscan_accounts/admin.py +++ /dev/null @@ -1,4 +0,0 @@ -from django.contrib import admin -from euscan_accounts.models import UserProfile - -admin.site.register(UserProfile) diff --git a/euscanwww/euscan_accounts/feeds.py b/euscanwww/euscan_accounts/feeds.py deleted file mode 100644 index 9a70b80..0000000 --- a/euscanwww/euscan_accounts/feeds.py +++ /dev/null @@ -1,26 +0,0 @@ -from djeuscan.feeds import BaseFeed -from euscan_accounts.helpers import get_profile, get_account_versionlogs - - -class UserFeed(BaseFeed): - link = "/" - - def description(self, data): - return "%s - last euscan changes" % data["user"] - - def title(self, data): - return "%s - watched packages" % data["user"] - - def get_object(self, request): - return { - "user": request.user, - "options": request.GET, - } - - def _items(self, data): - user = data["user"] - - profile = get_profile(user) - vlogs = get_account_versionlogs(profile) - - return vlogs, 100 diff --git a/euscanwww/euscan_accounts/forms.py b/euscanwww/euscan_accounts/forms.py deleted file mode 100644 index 620448d..0000000 --- a/euscanwww/euscan_accounts/forms.py +++ /dev/null @@ -1,38 +0,0 @@ -from django import forms -from euscan_accounts.models import UserProfile - - -class PreferencesForm(forms.Form): - first_name = forms.CharField(max_length=30, required=False) - last_name = forms.CharField(max_length=30, required=False) - email = forms.EmailField() - - feed_upstream_info = forms.BooleanField(required=False, - label="Upstream info") - feed_portage_info = forms.BooleanField(required=False, - label="Portage info") - feed_show_adds = forms.BooleanField(required=False, - label="Show version bumps") - feed_show_removals = forms.BooleanField(required=False, - label="Show version removals") - feed_ignore_pre = forms.BooleanField(required=False, - label="Ignore unstable releases") - feed_ignore_pre_if_stable = forms.BooleanField( - required=False, - label="Ignore unstable releases if current version is stable" - ) - - email_activated = forms.BooleanField( - required=False, label="Receive euscan emails" - ) - email_every = forms.ChoiceField( - choices=UserProfile.EMAIL_OPTS, - label="Send email", - ) - email_ignore_pre = forms.BooleanField( - required=False, label="Ignore unstable releases" - ) - email_ignore_pre_if_stable = forms.BooleanField( - required=False, - label="Ignore unstable releases if current version is stable" - ) diff --git a/euscanwww/euscan_accounts/helpers.py b/euscanwww/euscan_accounts/helpers.py deleted file mode 100644 index 7422ab9..0000000 --- a/euscanwww/euscan_accounts/helpers.py +++ /dev/null @@ -1,81 +0,0 @@ -from django.db.models import Q - - -def get_profile(user): - from euscan_accounts.models import UserProfile - try: - return user.get_profile() - except UserProfile.DoesNotExist: - UserProfile.objects.create(user=user) - return user.get_profile() - - -def get_account_categories(user): - from djeuscan.models import Package - # TODO: This is quite ugly - category_names = [obj.name for obj in get_profile(user).categories.all()] - return [c for c in Package.objects.categories() - if c["category"] in category_names] - - -def get_account_herds(user): - from djeuscan.models import Package - - ids = [herd.pk for herd in get_profile(user).herds.all()] - return Package.objects.herds(ids=ids) - - -def get_account_maintainers(user): - from djeuscan.models import Package - - ids = [obj.pk for obj in get_profile(user).maintainers.all()] - return Package.objects.maintainers(ids=ids) - - -def get_account_versionlogs(profile): - """ - Returns all watched packages - """ - from djeuscan.models import Package, VersionLog - - q_categories = Q(category__in=[ - category.name for category in profile.categories.all()]) - q_herds = Q(herds__in=profile.herds.all()) - q_maintainers = Q(maintainers__in=profile.maintainers.all()) - packages = list(profile.packages.all()) + list(Package.objects.filter( - q_categories | q_herds | q_maintainers)) - - overlays = [o.name for o in profile.overlays.all()] - - return VersionLog.objects.filter( - Q(package__in=packages) | Q(overlay__in=overlays) - ) - - -def get_user_fav_infos(user): - upstream_k = lambda c: c["n_versions"] - c["n_packaged"] - c["n_overlay"] - - categories = sorted(get_account_categories(user), - key=upstream_k, reverse=True) - c_upstream = sum([upstream_k(c) for c in categories]) - herds = sorted(get_account_herds(user), - key=upstream_k, reverse=True) - h_upstream = sum([upstream_k(c) for c in herds]) - maintainers = sorted(get_account_maintainers(user), - key=upstream_k, reverse=True) - m_upstream = sum([upstream_k(c) for c in maintainers]) - packages = sorted( - get_profile(user).packages.all(), - key=lambda p: p.n_versions - p.n_packaged - p.n_overlay, - reverse=True - ) - p_upstream = sum( - [c.n_versions - c.n_packaged - c.n_overlay for c in packages] - ) - - return { - "categories": categories, "categories_upstream": c_upstream, - "herds": herds, "herds_upstream": h_upstream, - "maintainers": maintainers, "maintainers_upstream": m_upstream, - "packages": packages, "packages_upstream": p_upstream, - } diff --git a/euscanwww/euscan_accounts/migrations/0001_initial.py b/euscanwww/euscan_accounts/migrations/0001_initial.py deleted file mode 100644 index a877d87..0000000 --- a/euscanwww/euscan_accounts/migrations/0001_initial.py +++ /dev/null @@ -1,159 +0,0 @@ -# -*- coding: utf-8 -*- -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - - def forwards(self, orm): - db.rename_table('djeuscan_userprofile', - 'euscan_accounts_userprofile') - db.rename_table('djeuscan_userprofile_overlays', - 'euscan_accounts_userprofile_overlays') - db.rename_table('djeuscan_userprofile_maintainers', - 'euscan_accounts_userprofile_maintainers') - db.rename_table('djeuscan_userprofile_packages', - 'euscan_accounts_userprofile_packages') - db.rename_table('djeuscan_userprofile_herds', - 'euscan_accounts_userprofile_herds') - db.rename_table('djeuscan_userprofile_categories', - 'euscan_accounts_userprofile_categories') - - if not db.dry_run: - # For permissions to work properly after migrating - orm['contenttypes.contenttype'].objects.filter( - app_label='djeuscan', model='userprofile' - ).update(app_label='euscan_accounts') - - def backwards(self, orm): - db.rename_table('euscan_accounts_userprofile', - 'djeuscan_userprofile') - db.rename_table('euscan_accounts_userprofile_overlays', - 'djeuscan_userprofile_overlays') - db.rename_table('euscan_accounts_userprofile_maintainers', - 'djeuscan_userprofile_maintainers') - db.rename_table('euscan_accounts_userprofile_packages', - 'djeuscan_userprofile_packages') - db.rename_table('euscan_accounts_userprofile_herds', - 'djeuscan_userprofile_herds') - db.rename_table('euscan_accounts_userprofile_categories', - 'djeuscan_userprofile_categories') - - - models = { - 'auth.group': { - 'Meta': {'object_name': 'Group'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), - 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) - }, - 'auth.permission': { - 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, - 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) - }, - 'auth.user': { - 'Meta': {'object_name': 'User'}, - 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), - 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), - 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), - 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), - 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'djeuscan.category': { - 'Meta': {'object_name': 'Category'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.herd': { - 'Meta': {'object_name': 'Herd'}, - 'email': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), - 'herd': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}) - }, - 'djeuscan.maintainer': { - 'Meta': {'object_name': 'Maintainer'}, - 'email': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.overlay': { - 'Meta': {'object_name': 'Overlay'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}) - }, - 'djeuscan.package': { - 'Meta': {'unique_together': "(['category', 'name'],)", 'object_name': 'Package'}, - 'category': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False', 'blank': 'True'}), - 'homepage': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_version_gentoo': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_gentoo'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_overlay': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_overlay'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'last_version_upstream': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_version_upstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['djeuscan.Version']"}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False', 'blank': 'True'}), - 'n_overlay': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_packaged': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'n_versions': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}) - }, - 'djeuscan.version': { - 'Meta': {'unique_together': "(['package', 'slot', 'revision', 'version', 'overlay'],)", 'object_name': 'Version'}, - 'alive': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}), - 'confidence': ('django.db.models.fields.IntegerField', [], {'default': '0'}), - 'ebuild_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'handler': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'metadata_path': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), - 'overlay': ('django.db.models.fields.CharField', [], {'default': "'gentoo'", 'max_length': '128', 'db_index': 'True', 'blank': 'True'}), - 'package': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djeuscan.Package']"}), - 'packaged': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'revision': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'slot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), - 'urls': ('django.db.models.fields.TextField', [], {'blank': 'True'}), - 'version': ('django.db.models.fields.CharField', [], {'max_length': '128'}), - 'vtype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) - }, - 'euscan_accounts.userprofile': { - 'Meta': {'object_name': 'UserProfile'}, - 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Category']", 'symmetrical': 'False'}), - 'email_activated': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'email_every': ('django.db.models.fields.IntegerField', [], {'default': '1'}), - 'email_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'email_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_ignore_pre_if_stable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_portage_info': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), - 'feed_show_adds': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_show_removals': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'feed_upstream_info': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), - 'herds': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Herd']", 'symmetrical': 'False'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'last_email': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), - 'maintainers': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Maintainer']", 'symmetrical': 'False'}), - 'overlays': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Overlay']", 'symmetrical': 'False'}), - 'packages': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['djeuscan.Package']", 'symmetrical': 'False'}), - 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) - } - } - - complete_apps = ['euscan_accounts'] diff --git a/euscanwww/euscan_accounts/migrations/__init__.py b/euscanwww/euscan_accounts/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_accounts/models.py b/euscanwww/euscan_accounts/models.py deleted file mode 100644 index 0d83e15..0000000 --- a/euscanwww/euscan_accounts/models.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User - -from djeuscan.models import Herd, Maintainer, Package, Category, Overlay - - -class UserProfile(models.Model): - EMAIL_SCAN = 1 - EMAIL_WEEKLY = 2 - EMAIL_MONTHLY = 3 - EMAIL_OPTS = ( - (EMAIL_SCAN, 'On updates'), - (EMAIL_WEEKLY, 'Weekly'), - (EMAIL_MONTHLY, 'Monthly') - ) - - user = models.OneToOneField(User) - herds = models.ManyToManyField(Herd) - maintainers = models.ManyToManyField(Maintainer) - packages = models.ManyToManyField(Package) - categories = models.ManyToManyField(Category) - overlays = models.ManyToManyField(Overlay) - - feed_upstream_info = models.BooleanField(default=True) - feed_portage_info = models.BooleanField(default=False) - feed_show_adds = models.BooleanField(default=True) - feed_show_removals = models.BooleanField(default=True) - feed_ignore_pre = models.BooleanField(default=False) - feed_ignore_pre_if_stable = models.BooleanField(default=False) - - email_activated = models.BooleanField(default=True) - email_every = models.IntegerField(choices=EMAIL_OPTS, default=EMAIL_SCAN) - email_ignore_pre = models.BooleanField(default=False) - email_ignore_pre_if_stable = models.BooleanField(default=False) - last_email = models.DateTimeField(auto_now_add=True) diff --git a/euscanwww/euscan_accounts/templates/euscan/_favourite.html b/euscanwww/euscan_accounts/templates/euscan/_favourite.html deleted file mode 100644 index ff4686a..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/_favourite.html +++ /dev/null @@ -1,23 +0,0 @@ -
    - - - {% for pk in packages_ids %} - - {% endfor %} -
    - -
    - - - {% for pk in packages_ids %} - - {% endfor %} -
    diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/categories.html b/euscanwww/euscan_accounts/templates/euscan/accounts/categories.html deleted file mode 100644 index 0caa1a6..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/categories.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched categories -{% endblock %} - - -{% block content %} -

    Watched categories

    - - {% categories_table categories %} - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt b/euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt deleted file mode 100644 index baf396b..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/euscan_email.txt +++ /dev/null @@ -1,32 +0,0 @@ -{% load djeuscan_helpers %}{% load sub %}Hello {{ user }}, - -{% if vlogs %}euscan news: -{% for vlog in vlogs %} * {{ vlog.package|ljust:"35" }} {{ vlog.version }} {% if vlog.vtype and not vlog.vtype|is_stable %}({{ vlog.vtype }}){% endif %} -{% endfor %} -{% endif %} - -Summary: -{% with categories|length as num_categories %}{% if num_categories %} -Watching {{ num_categories }} categor{{ num_categories|pluralize:"y,ies"}}: {{ categories_upstream }} upstream version{{ categories_upstream|pluralize:"s"}} -{% if categories_upstream %}Hot categories: -{% for c in categories|slice:":3" %} * {{ c.category }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %}{% with herds|length as num_herds %}{% if num_herds %} -Watching {{ num_herds }} herd{{ num_herds|pluralize:"s"}}: {{ herds_upstream }} upstream version{{ herds_upstream|pluralize:"s"}} -{% if herds_upstream %}Hot herds: -{% for c in herds|slice:":3" %} * {{ c.herds__herd }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %}{% with maintainers|length as num_maintainers %}{% if num_maintainers %} -Watching {{ num_maintainers }} maintainer{{ num_maintainers|pluralize:"s"}}: {{ maintainers_upstream }} upstream version{{ maintainers_upstream|pluralize:"s"}} -{% if maintainers_upstream %}Hot maintainers: -{% for c in maintainers|slice:":3" %} * {{ c.maintainers__name }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %}{% with packages|length as num_packages %}{% if num_packages %} -Watching {{ num_packages }} package{{ num_packages|pluralize:"s"}}: {{ packages_upstream }} upstream version{{ packages_upstream|pluralize:"s"}} -{% if packages_upstream %}Hot packages: -{% for c in packages|slice:":3" %} * {{ c }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }}) -{% endfor %} -{% endif %}{% endif %}{% endwith %} --- -This email was sent by euscan, please do not reply. -Go to your euscan account to change email notification settings. diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/herds.html b/euscanwww/euscan_accounts/templates/euscan/accounts/herds.html deleted file mode 100644 index b9d3f50..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/herds.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched herds -{% endblock %} - - -{% block content %} -

    Watched herds

    - - {% herds_table herds %} -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/index.html b/euscanwww/euscan_accounts/templates/euscan/accounts/index.html deleted file mode 100644 index 0e61ed6..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/index.html +++ /dev/null @@ -1,110 +0,0 @@ -{% extends "_base.html" %} -{% load url from future %} -{% load sub %} - -{% block title %} - {{ block.super }} - Welcome {{ user }} -{% endblock %} - -{% block content %} -

    - Welcome {{ user }} - - - - Change password - - - - Preferences - - -

    - -

    Summary

    - -
    -
    - {% with categories|length as num_categories %} - Watching {{ num_categories }} categor{{ num_categories|pluralize:"y,ies"}} -
      -
    • {{ categories_upstream }} new upstream version{{ categories_upstream|pluralize:"s"}}
    • - {% if categories_upstream %} -
    • - Hot categories: -
        - {% for c in categories|slice:":3" %} -
      • {{ c.category }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    - -
    - {% with herds|length as num_herds %} - Watching {{ num_herds }} herd{{ num_herds|pluralize:"s"}} -
      -
    • {{ herds_upstream }} new upstream version{{ herds_upstream|pluralize:"s"}}
    • - {% if herds_upstream %} -
    • - Hot herds: -
        - {% for c in herds|slice:":3" %} -
      • {{ c.herds__herd }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    - -
    -
    - -
    - {% with maintainers|length as num_maintainers %} - Watching {{ num_maintainers }} maintainer{{ num_maintainers|pluralize:"s"}} -
      -
    • {{ maintainers_upstream }} new upstream version{{ maintainers_upstream|pluralize:"s"}}
    • - {% if maintainers_upstream %} -
    • - Hot maintainers: -
        - {% for c in maintainers|slice:":3" %} -
      • {{ c.maintainers__name }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    - -
    - {% with packages|length as num_packages %} - Watching {{ num_packages }} package{{ num_packages|pluralize:"s"}} -
      -
    • {{ packages_upstream }} new upstream version{{ packages_upstream|pluralize:"s"}}
    • - {% if packages_upstream %} -
    • - Hot packages: -
        - {% for c in packages|slice:":3" %} -
      • {{ c }} ({{ c.n_versions|sub:c.n_packaged|sub:c.n_overlay }})
      • - {% endfor %} -
      -
    • - {% endif %} -
    - {% endwith %} -
    -
    - -
    -{% include "euscan/_package_vlogs.html" %} -
    -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html b/euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html deleted file mode 100644 index cc8eefe..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/maintainers.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched maintainers -{% endblock %} - - -{% block content %} -

    Watched maintainers

    - - {% maintainers_table maintainers %} -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html b/euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html deleted file mode 100644 index 946b61e..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/overlays.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "euscan/_datatable.html" %} - -{% load djeuscan_helpers %} -{% load url from future %} - -{% block title %} -{{ block.super }} - Watched overlays -{% endblock %} - -{% block content %} -

    Watched overlays

    - -{% overlays_table overlays %} - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/packages.html b/euscanwww/euscan_accounts/templates/euscan/accounts/packages.html deleted file mode 100644 index 46e674b..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/packages.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "euscan/_datatable.html" %} -{% load url from future %} - -{% load djeuscan_helpers %} - -{% block title %} - {{ block.super }} - Watched packages -{% endblock %} - - -{% block content %} -

    Watched packages

    - - {% packages packages %} - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html b/euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html deleted file mode 100644 index 8df632a..0000000 --- a/euscanwww/euscan_accounts/templates/euscan/accounts/preferences.html +++ /dev/null @@ -1,116 +0,0 @@ -{% extends "_base.html" %} -{% load url from future %} - -{% block title %} - {{ block.super }} - Edit user preferences for {{ user }} -{% endblock %} - -{% block css %} - {{ block.super }} - -{% endblock %} - -{% block javascript %} - {{ block.super }} - - -{% endblock %} - - -{% block content %} - {% if updated %} -
    - Saved! Your preferences have been saved -
    - {% endif %} - -

    - Edit user preferences -

    - -
    - {% csrf_token %} - - - - - - - - - - - - - - -
    Personal settings
    {{ form.first_name.label_tag }}{% if form.first_name.errors %}
      {{ form.first_name.errors }}
    {% endif %}{{ form.first_name }}
    {{ form.last_name.label_tag }}{% if form.last_name.errors %}
      {{ form.last_name.errors }}
    {% endif %}{{ form.last_name }}
    {{ form.email.label_tag }}{% if form.first_name.errors %}
      {{ form.email.errors }}
    {% endif %} {{ form.email }}
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Feed settings
    {{ form.feed_upstream_info.label_tag }}{{ form.feed_upstream_info }}
    {{ form.feed_portage_info.label_tag }}{{ form.feed_portage_info }}
    {{ form.feed_show_adds.label_tag }}{{ form.feed_show_adds }}
    {{ form.feed_show_removals.label_tag }}{{ form.feed_show_removals }}
    {{ form.feed_ignore_pre.label_tag }}{{ form.feed_ignore_pre }}
    {{ form.feed_ignore_pre_if_stable.label_tag }}{{ form.feed_ignore_pre_if_stable }}
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Mail settings
    {{ form.email_activated.label_tag }}{{ form.email_activated }}
    {{ form.email_every.label_tag }}{{ form.email_every }}
    {{ form.email_ignore_pre.label_tag }}{{ form.email_ignore_pre }}
    {{ form.email_ignore_pre_if_stable.label_tag }}{{ form.email_ignore_pre_if_stable }}
     
    - -
    -
    - - -{% endblock %} diff --git a/euscanwww/euscan_accounts/templatetags/__init__.py b/euscanwww/euscan_accounts/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py b/euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py deleted file mode 100644 index c664837..0000000 --- a/euscanwww/euscan_accounts/templatetags/euscan_accounts_helpers.py +++ /dev/null @@ -1,11 +0,0 @@ -from django import template -from django.core.urlresolvers import reverse - -register = template.Library() - - -@register.inclusion_tag('euscan/_favourite.html', takes_context=True) -def favourite_buttons(context, subj, *args): - context["favourite_url"] = reverse("favourite_%s" % subj, args=args) - context["unfavourite_url"] = reverse("unfavourite_%s" % subj, args=args) - return context diff --git a/euscanwww/euscan_accounts/tests.py b/euscanwww/euscan_accounts/tests.py deleted file mode 100644 index 501deb7..0000000 --- a/euscanwww/euscan_accounts/tests.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -This file demonstrates writing tests using the unittest module. These will pass -when you run "manage.py test". - -Replace this with more appropriate tests for your application. -""" - -from django.test import TestCase - - -class SimpleTest(TestCase): - def test_basic_addition(self): - """ - Tests that 1 + 1 always equals 2. - """ - self.assertEqual(1 + 1, 2) diff --git a/euscanwww/euscan_accounts/urls.py b/euscanwww/euscan_accounts/urls.py deleted file mode 100644 index 0a798cb..0000000 --- a/euscanwww/euscan_accounts/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.conf.urls import patterns, url -from django.contrib.auth.views import logout -from django.views.generic import RedirectView -from django.contrib.auth.decorators import login_required - -from euscan_accounts.feeds import UserFeed - - -urlpatterns = patterns('euscan_accounts.views', - url(r'^profile/$', 'accounts_index', name="accounts_index"), - url(r'^profile/preferences/$', 'accounts_preferences', - name="accounts_preferences"), - url(r'^categories/$', 'accounts_categories', name="accounts_categories"), - url(r'^herds/$', 'accounts_herds', name="accounts_herds"), - url(r'^maintainers/$', 'accounts_maintainers', - name="accounts_maintainers"), - url(r'^packages/$', 'accounts_packages', name="accounts_packages"), - url(r'^overlays/$', 'accounts_overlays', name="accounts_overlays"), - - url(r'^feed/$', login_required(UserFeed()), name='user_feed'), - - url(r'^logout/$', logout, {'next_page': '/'}), - - url(r'^password/change/done/$', - RedirectView.as_view(url="../../../profile/")), -) diff --git a/euscanwww/euscan_accounts/views.py b/euscanwww/euscan_accounts/views.py deleted file mode 100644 index 5856cbd..0000000 --- a/euscanwww/euscan_accounts/views.py +++ /dev/null @@ -1,246 +0,0 @@ -from annoying.decorators import render_to, ajax_request - -from django.shortcuts import get_object_or_404, redirect -from django.core.urlresolvers import reverse -from django.contrib.auth.decorators import login_required -from django.views.decorators.http import require_POST - -from djeuscan.models import Package, Category, Herd, Overlay -from djeuscan.helpers import get_maintainer_or_404 - -from euscan_accounts.feeds import UserFeed -from euscan_accounts.forms import PreferencesForm -from euscan_accounts.helpers import get_user_fav_infos, get_profile, \ - get_account_categories, get_account_herds, get_account_maintainers - - -@login_required -@render_to('euscan/accounts/index.html') -def accounts_index(request): - user = request.user - - infos = get_user_fav_infos(user) - infos['vlog'] = UserFeed().items({'user': user, 'options': {}}) - - return infos - - -@login_required -@render_to('euscan/accounts/preferences.html') -def accounts_preferences(request): - user = request.user - prof = get_profile(user) - - updated = False - if request.method == "POST": - form = PreferencesForm(request.POST) - if form.is_valid(): - user.first_name = form.cleaned_data["first_name"] - user.last_name = form.cleaned_data["last_name"] - user.email = form.cleaned_data["email"] - user.save(force_update=True) - - prof.feed_upstream_info = form.cleaned_data["feed_upstream_info"] - prof.feed_portage_info = form.cleaned_data["feed_portage_info"] - prof.feed_show_adds = form.cleaned_data["feed_show_adds"] - prof.feed_show_removals = form.cleaned_data["feed_show_removals"] - prof.feed_ignore_pre = form.cleaned_data["feed_ignore_pre"] - prof.feed_ignore_pre_if_stable = \ - form.cleaned_data["feed_ignore_pre_if_stable"] - - prof.email_activated = form.cleaned_data["email_activated"] - prof.email_every = form.cleaned_data["email_every"] - prof.email_ignore_pre = form.cleaned_data["email_ignore_pre"] - prof.email_ignore_pre_if_stable = \ - form.cleaned_data["email_ignore_pre_if_stable"] - - prof.save(force_update=True) - - updated = True - else: - initial_data = { - "first_name": user.first_name, - "last_name": user.last_name, - "email": user.email, - "feed_upstream_info": prof.feed_upstream_info, - "feed_portage_info": prof.feed_portage_info, - "feed_show_adds": prof.feed_show_adds, - "feed_show_removals": prof.feed_show_removals, - "feed_ignore_pre": prof.feed_ignore_pre, - "feed_ignore_pre_if_stable": prof.feed_ignore_pre_if_stable, - "email_activated": prof.email_activated, - "email_every": prof.email_every, - "email_ignore_pre": prof.email_ignore_pre, - "email_ignore_pre_if_stable": prof.email_ignore_pre_if_stable, - } - form = PreferencesForm(initial_data) - return {"form": form, "updated": updated} - - -@login_required -@render_to('euscan/accounts/categories.html') -def accounts_categories(request): - return {"categories": get_account_categories(request.user)} - - -@login_required -@render_to('euscan/accounts/herds.html') -def accounts_herds(request): - return {"herds": get_account_herds(request.user)} - - -@login_required -@render_to('euscan/accounts/maintainers.html') -def accounts_maintainers(request): - return {"maintainers": get_account_maintainers(request.user)} - - -@login_required -@render_to('euscan/accounts/packages.html') -def accounts_packages(request): - return {"packages": get_profile(request.user).packages.all()} - - -@login_required -@render_to('euscan/accounts/overlays.html') -def accounts_overlays(request): - overlays = [obj.name for obj in get_profile(request.user).overlays.all()] - return {"overlays": overlays} - - -@login_required -@require_POST -@ajax_request -def favourite_package(request, category, package): - obj = get_object_or_404(Package, category=category, name=package) - get_profile(request.user).packages.add(obj) - if "nojs" in request.POST: - return redirect(reverse("package", args=(category, package))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_package(request, category, package): - obj = get_object_or_404(Package, category=category, name=package) - get_profile(request.user).packages.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("package", args=(category, package))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_herd(request, herd): - obj = get_object_or_404(Herd, herd=herd) - get_profile(request.user).herds.add(obj) - if "nojs" in request.POST: - return redirect(reverse("herd", args=(herd, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_herd(request, herd): - obj = get_object_or_404(Herd, herd=herd) - get_profile(request.user).herds.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("herd", args=(herd, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_maintainer(request, maintainer_id=None, maintainer_email=None): - obj = get_maintainer_or_404(maintainer_id, maintainer_email) - get_profile(request.user).maintainers.add(obj) - if "nojs" in request.POST: - return redirect(reverse("maintainer", args=(obj.email, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_maintainer(request, maintainer_id=None, maintainer_email=None): - obj = get_maintainer_or_404(maintainer_id, maintainer_email) - get_profile(request.user).maintainers.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("maintainer", args=(obj.email, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_category(request, category): - obj = Category.objects.get(name=category) - get_profile(request.user).categories.add(obj) - if "nojs" in request.POST: - return redirect(reverse("category", args=(category, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_category(request, category): - obj = Category.objects.get(name=category) - get_profile(request.user).categories.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("category", args=(category, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_overlay(request, overlay): - obj = Overlay.objects.get(name=overlay) - get_profile(request.user).overlays.add(obj) - if "nojs" in request.POST: - return redirect(reverse("overlay", args=(overlay, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_overlay(request, overlay): - obj = Overlay.objects.get(name=overlay) - get_profile(request.user).overlays.remove(obj) - if "nojs" in request.POST: - return redirect(reverse("overlay", args=(overlay, ))) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def favourite_world(request): - if not "packages[]" in request.POST: - return {"success": False} - packages = request.POST.getlist("packages[]") - objs = Package.objects.filter(id__in=packages) - get_profile(request.user).packages.add(*objs) - if "nojs" in request.POST: - return redirect(reverse("world")) - return {"success": True} - - -@login_required -@require_POST -@ajax_request -def unfavourite_world(request): - if not "packages[]" in request.POST: - return {"success": False} - packages = request.POST.getlist("packages[]") - objs = Package.objects.filter(id__in=packages) - get_profile(request.user).packages.remove(*objs) - if "nojs" in request.POST: - return redirect(reverse("world")) - return {"success": True} diff --git a/euscanwww/euscan_captcha/__init__.py b/euscanwww/euscan_captcha/__init__.py deleted file mode 100644 index cfb4ead..0000000 --- a/euscanwww/euscan_captcha/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -#from registration.backends.default import DefaultBackend -#from forms import RegistrationFormCaptcha -# -#class CaptchaDefaultBackend(DefaultBackend): -# def get_form_class(self, request): -# return RegistrationFormCaptcha diff --git a/euscanwww/euscan_captcha/forms.py b/euscanwww/euscan_captcha/forms.py deleted file mode 100644 index d5f1185..0000000 --- a/euscanwww/euscan_captcha/forms.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.conf import settings - -from captcha.fields import ReCaptchaField -from registration.forms import RegistrationForm - -class RecaptchaRegistrationForm(RegistrationForm): - captcha = ReCaptchaField( - public_key=settings.RECAPTCHA_PUBLIC_KEY, - private_key=settings.RECAPTCHA_PRIVATE_KEY, - use_ssl=True, - attrs={'theme': 'white'}) diff --git a/euscanwww/euscan_captcha/models.py b/euscanwww/euscan_captcha/models.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscan_captcha/urls.py b/euscanwww/euscan_captcha/urls.py deleted file mode 100644 index 435ba5c..0000000 --- a/euscanwww/euscan_captcha/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.conf.urls import patterns, url - -from views import RecaptchaRegistrationView - -urlpatterns = patterns( - '', url( - r'^register/$', - RecaptchaRegistrationView.as_view(), - name='registration_register'), -) diff --git a/euscanwww/euscan_captcha/views.py b/euscanwww/euscan_captcha/views.py deleted file mode 100644 index 45ff0be..0000000 --- a/euscanwww/euscan_captcha/views.py +++ /dev/null @@ -1,5 +0,0 @@ -from registration.backends.default.views import RegistrationView -from forms import RecaptchaRegistrationForm - -class RecaptchaRegistrationView(RegistrationView): - form_class = RecaptchaRegistrationForm diff --git a/euscanwww/euscanwww/__init__.py b/euscanwww/euscanwww/__init__.py deleted file mode 100644 index 8b13789..0000000 --- a/euscanwww/euscanwww/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/euscanwww/euscanwww/models.py b/euscanwww/euscanwww/models.py deleted file mode 100644 index e69de29..0000000 diff --git a/euscanwww/euscanwww/sendmail.py b/euscanwww/euscanwww/sendmail.py deleted file mode 100644 index 691b05b..0000000 --- a/euscanwww/euscanwww/sendmail.py +++ /dev/null @@ -1,53 +0,0 @@ -"""sendmail email backend class.""" - -import threading - -from django.core.mail.backends.base import BaseEmailBackend -from subprocess import Popen, PIPE - - -class EmailBackend(BaseEmailBackend): - def __init__(self, fail_silently=False, **kwargs): - super(EmailBackend, self).__init__(fail_silently=fail_silently) - self._lock = threading.RLock() - - def open(self): - return True - - def close(self): - pass - - def send_messages(self, email_messages): - """ - Sends one or more EmailMessage objects and returns the number of email - messages sent. - """ - if not email_messages: - return - self._lock.acquire() - try: - num_sent = 0 - for message in email_messages: - sent = self._send(message) - if sent: - num_sent += 1 - finally: - self._lock.release() - return num_sent - - def _send(self, email_message): - """A helper method that does the actual sending.""" - if not email_message.recipients(): - return False - try: - ps = Popen(["sendmail"] + list(email_message.recipients()), \ - stdin=PIPE) - ps.stdin.write(email_message.message().as_string()) - ps.stdin.flush() - ps.stdin.close() - return not ps.wait() - except: - if not self.fail_silently: - raise - return False - return True diff --git a/euscanwww/euscanwww/settings.py b/euscanwww/euscanwww/settings.py deleted file mode 100644 index e1e752c..0000000 --- a/euscanwww/euscanwww/settings.py +++ /dev/null @@ -1,273 +0,0 @@ -# Django settings for euscanwww project. - -import os.path - -DEBUG = False -TEMPLATE_DEBUG = DEBUG - -ADMINS = ( - ('admin', 'admin@example.com'), -) - -MANAGERS = ADMINS - -""" -# MySQL Example: - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'euscan', - 'USER': 'euscan', - 'PASSWORD': 'password', - 'HOST': 'localhost', - 'PORT': '', - 'OPTIONS': { - 'init_command': 'SET storage_engine=INNODB', - } - }, - -# PostGreSQL Example: - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'euscan', - 'USER': 'euscan', - 'PASSWORD': '', - 'HOST': 'localhost', - 'PORT': '', - }, -""" - -SITE_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# euscan specific config -EUSCAN_ROOT = SITE_ROOT -RRD_ROOT = os.path.join(EUSCAN_ROOT, 'var', 'rrd') - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(EUSCAN_ROOT, 'var', 'db', 'euscan.db') - }, -} - -CACHES = { - 'default': { - 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', - 'LOCATION': os.path.join(EUSCAN_ROOT, 'var', 'cache'), - } -} - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = 'Europe/Paris' - -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = 'en-us' - -SITE_ID = 1 - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/home/media/media.lawrence.com/" -MEDIA_ROOT = os.path.join(SITE_ROOT, 'var', 'uploads') - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash if there is a path component (optional in other cases). -# Examples: "http://media.lawrence.com", "http://example.com/media/" -MEDIA_URL = '/media/' - -# URL prefix for static files. -# Example: "http://media.lawrence.com/static/" -STATIC_URL = '/static/' - -# Additional locations of static files -STATICFILES_DIRS = ( - os.path.join(SITE_ROOT, 'htdocs'), -) - -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', -# 'django.contrib.staticfiles.finders.DefaultStorageFinder', -) - -# Make this unique, and don't share it with anybody. -SECRET_KEY = '' - -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', -# 'django.template.loaders.eggs.Loader', -) - -MIDDLEWARE_CLASSES = ( - 'django.middleware.common.CommonMiddleware', - # Cache middleware - 'django.middleware.cache.UpdateCacheMiddleware', - 'django.middleware.cache.FetchFromCacheMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - # Disable Csrf for now - # 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - # Uncomment the next line for simple clickjacking protection: - # 'django.middleware.clickjacking.XFrameOptionsMiddleware', -) - -CACHE_MIDDLEWARE_SECONDS = 3600 -CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True - -ROOT_URLCONF = 'euscanwww.urls' - -# Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = 'euscanwww.wsgi.application' - -FORCE_SCRIPT_NAME = "" - -TEMPLATE_DIRS = ( - os.path.join(SITE_ROOT, 'templates'), -) - -TEMPLATE_CONTEXT_PROCESSORS = ( - "django.contrib.auth.context_processors.auth", - "django.core.context_processors.debug", - "django.core.context_processors.i18n", - "django.core.context_processors.media", - "django.core.context_processors.static", - "django.contrib.messages.context_processors.messages", - "django.core.context_processors.request", -) - -INSTALLED_APPS = ( - 'euscanwww', - 'djeuscan', - 'euscan_accounts', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.admin', - # Uncomment the next line to enable admin documentation: - # 'django.contrib.admindocs', - 'south', - 'djcelery', - 'registration', - 'captcha' -) - -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'formatters': { - 'simple': { - 'format': '%(levelname)s %(asctime)s %(message)s' - }, - }, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } - }, - 'handlers': { - 'console': { - 'level': 'INFO', - 'class': 'logging.StreamHandler', - 'formatter': 'simple' - }, - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' - } - }, - 'loggers': { - 'django.request': { - 'handlers': ['mail_admins'], - 'level': 'ERROR', - 'propagate': True, - }, - 'djeuscan': { - 'handlers': ['console'], - 'level': 'INFO', - 'propagate': True - } - } -} - -# django-registration -ACCOUNT_ACTIVATION_DAYS = 7 -RECAPTCHA_PUBLIC_KEY = "" -RECAPTCHA_PRIVATE_KEY = "" -EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' - -# djeuscan tasks -PORTAGE_ROOT = "/" -PORTAGE_CONFIGROOT = "/" -EIX_CACHEFILE = os.path.join(PORTAGE_ROOT, 'var/cache/eix') -LAYMAN_CONFIG = "/etc/layman/layman.cfg" -MAKE_CONF = "/etc/make.conf" - -EGENCACHE_JOBS = 4 - -# Celery config -import djcelery -djcelery.setup_loader() -BROKER_URL = "amqp://guest:guest@localhost:5672//" -BROKER_CONNECTION_TIMEOUT = 3600 -CELERY_RESULT_BACKEND = "amqp" -CELERYD_CONCURRENCY = 4 -CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" - -TASKS_UPSTREAM_GROUPS = 32 -TASKS_EMAIL_GROUPS = 10 - -DAYS_TO_STABILIZATION = 30 - -# LDAP authentication -# TODO: Test data - change me! -AUTH_LDAP_SERVER_URI = "ldap://localhost" -AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,ou=users,dc=my-domain,dc=com" -AUTHENTICATION_BACKENDS = ( - 'django_auth_ldap.backend.LDAPBackend', - 'django.contrib.auth.backends.ModelBackend', -) - -AUTH_PROFILE_MODULE = 'euscan_accounts.UserProfile' - -try: - from local_settings import * -except ImportError, ex: - import sys - sys.stderr.write( - "settings.py: error importing local settings file:\n" - "\t%s\nDo you have a local_settings.py module?\n" % str(ex) - ) - -os.environ['ROOT'] = PORTAGE_ROOT -os.environ['PORTAGE_CONFIGROOT'] = PORTAGE_CONFIGROOT -os.environ['EIX_CACHEFILE'] = EIX_CACHEFILE -os.environ['http_proxy'] = '127.0.0.1:8123' diff --git a/euscanwww/euscanwww/templates/404.html b/euscanwww/euscanwww/templates/404.html deleted file mode 100644 index 03332b4..0000000 --- a/euscanwww/euscanwww/templates/404.html +++ /dev/null @@ -1 +0,0 @@ -

    Not Found

    diff --git a/euscanwww/euscanwww/urls.py b/euscanwww/euscanwww/urls.py deleted file mode 100644 index 524fe5e..0000000 --- a/euscanwww/euscanwww/urls.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.conf import settings -from django.conf.urls import patterns, include, url -from django.contrib import admin -admin.autodiscover() - - -urlpatterns = patterns('', - url(r'^', include('djeuscan.urls')), - - url(r'^admin/', include(admin.site.urls)), - url(r'^accounts/', include('euscan_accounts.urls')), - url(r'^accounts/', include('euscan_captcha.urls')), - url(r'^accounts/', include('registration.backends.default.urls')), -) - - -if settings.DEBUG: - import os - - urlpatterns += patterns('', - url(r'^static/(?P.*)$', 'django.views.static.serve', { - 'document_root': os.path.join(settings.EUSCAN_ROOT, 'htdocs'), - }), - ) diff --git a/euscanwww/euscanwww/wsgi.py b/euscanwww/euscanwww/wsgi.py deleted file mode 100644 index 3c37f1b..0000000 --- a/euscanwww/euscanwww/wsgi.py +++ /dev/null @@ -1,28 +0,0 @@ -""" -WSGI config for {{ project_name }} project. - -This module contains the WSGI application used by Django's development server -and any production WSGI deployments. It should expose a module-level variable -named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover -this application via the ``WSGI_APPLICATION`` setting. - -Usually you will have the standard Django WSGI application here, but it also -might make sense to replace the whole Django WSGI application with a custom one -that later delegates to the Django one. For example, you could introduce WSGI -middleware here, or combine a Django application with an application of another -framework. - -""" -import os - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "euscanwww.settings") - -# This application object is used by any WSGI server configured to use this -# file. This includes Django's development server, if the WSGI_APPLICATION -# setting points here. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() - -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) diff --git a/euscanwww/htdocs/css/bootstrap.min.css b/euscanwww/htdocs/css/bootstrap.min.css deleted file mode 100644 index b74b454..0000000 --- a/euscanwww/htdocs/css/bootstrap.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap v2.0.4 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.127659574%;*margin-left:2.0744680846382977%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%}.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%}.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%}.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%}.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%}.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%}.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%}.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%}.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%}.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%}.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%}.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:""}.container-fluid:after{clear:both}p{margin:0 0 9px}p small{font-size:11px;color:#999}.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px}h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999}h1{font-size:30px;line-height:36px}h1 small{font-size:18px}h2{font-size:24px;line-height:36px}h2 small{font-size:18px}h3{font-size:18px;line-height:27px}h3 small{font-size:14px}h4,h5,h6{line-height:18px}h4{font-size:14px}h4 small{font-size:12px}h5{font-size:12px}h6{font-size:11px;color:#999;text-transform:uppercase}.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eee}.page-header h1{line-height:1}ul,ol{padding:0;margin:0 0 9px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}ul{list-style:disc}ol{list-style:decimal}li{line-height:18px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:18px}dt,dd{line-height:18px}dt{font-weight:bold;line-height:17px}dd{margin-left:9px}.dl-horizontal dt{float:left;width:120px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:18px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}strong{font-weight:bold}em{font-style:italic}.muted{color:#999}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px}blockquote small{display:block;line-height:18px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:18px;font-style:normal;line-height:18px}small{font-size:100%}cite{font-style:normal}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:18px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 18px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:13.5px;color:#999}label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555}input,textarea{width:210px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-ms-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer}input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}.uneditable-textarea{width:auto;height:auto}select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px}select{width:220px;border:1px solid #bbb}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:930px}input.span11,textarea.span11,.uneditable-input.span11{width:850px}input.span10,textarea.span10,.uneditable-input.span10{width:770px}input.span9,textarea.span9,.uneditable-input.span9{width:690px}input.span8,textarea.span8,.uneditable-input.span8{width:610px}input.span7,textarea.span7,.uneditable-input.span7{width:530px}input.span6,textarea.span6,.uneditable-input.span6{width:450px}input.span5,textarea.span5,.uneditable-input.span5{width:370px}input.span4,textarea.span4,.uneditable-input.span4{width:290px}input.span3,textarea.span3,.uneditable-input.span3{width:210px}input.span2,textarea.span2,.uneditable-input.span2{width:130px}input.span1,textarea.span1,.uneditable-input.span1{width:50px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee;border-color:#ddd}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:""}.form-actions:after{clear:both}.uneditable-input{overflow:hidden;white-space:nowrap;cursor:not-allowed;background-color:#fff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}:-moz-placeholder{color:#999}:-ms-input-placeholder{color:#999}::-webkit-input-placeholder{color:#999}.help-block,.help-inline{color:#555}.help-block{display:block;margin-bottom:9px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-prepend,.input-append{margin-bottom:5px}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:middle;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{z-index:2}.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc}.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;height:18px;min-width:16px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc}.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .uneditable-input{border-right-color:#ccc;border-left-color:#eee}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:9px}legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:18px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:160px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:160px}.form-horizontal .help-block{margin-top:9px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:18px}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0}.icon-white{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";opacity:.3;filter:alpha(opacity=30)}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:4px 0;margin:1px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-ms-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-ms-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 10px 4px;margin-bottom:0;*margin-left:.3em;font-size:13px;line-height:18px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:1px}.btn-small{padding:5px 9px;font-size:11px;line-height:16px}.btn-small [class^="icon-"]{margin-top:-1px}.btn-mini{padding:2px 6px;font-size:11px;line-height:14px}.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#ccc;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.btn-primary{background-color:#0074cc;*background-color:#05c;background-image:-ms-linear-gradient(top,#08c,#05c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#05c));background-image:-webkit-linear-gradient(top,#08c,#05c);background-image:-o-linear-gradient(top,#08c,#05c);background-image:-moz-linear-gradient(top,#08c,#05c);background-image:linear-gradient(top,#08c,#05c);background-repeat:repeat-x;border-color:#05c #05c #003580;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#05c;*background-color:#004ab3}.btn-primary:active,.btn-primary.active{background-color:#004099 \9}.btn-warning{background-color:#faa732;*background-color:#f89406;background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{background-color:#da4f49;*background-color:#bd362f;background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{background-color:#5bb75b;*background-color:#51a351;background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{background-color:#49afcd;*background-color:#2f96b4;background-image:-ms-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{background-color:#414141;*background-color:#222;background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:-moz-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-group{position:relative;*margin-left:.3em;*zoom:1}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:9px;margin-bottom:9px}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-group>.btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.dropdown-toggle{*padding-top:4px;padding-right:8px;*padding-bottom:4px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini.dropdown-toggle{padding-right:5px;padding-left:5px}.btn-group>.btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px}.btn-group>.btn-large.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#05c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:7px;margin-left:0}.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.btn-mini .caret{margin-top:5px}.btn-small .caret{margin-top:6px}.btn-large .caret{margin-top:6px;border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:.75;filter:alpha(opacity=75)}.alert{padding:8px 35px 8px 14px;margin-bottom:18px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert-heading{color:inherit}.alert .close{position:relative;top:-2px;right:-21px;line-height:18px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:18px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.navbar{*position:relative;*z-index:2;margin-bottom:18px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top,#333,#222);background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar{color:#999}.navbar .brand:hover{text-decoration:none}.navbar .brand{display:block;float:left;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#999}.navbar .navbar-text{margin-bottom:0;line-height:40px}.navbar .navbar-link{color:#999}.navbar .navbar-link:hover{color:#fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#fff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{display:block;float:left}.navbar .nav>li>a{float:none;padding:9px 10px 11px;line-height:19px;color:#999;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar .btn{display:inline-block;padding:4px 10px 4px;margin:5px 5px 6px;line-height:18px}.navbar .btn-group{padding:5px 5px 6px;margin:0}.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:transparent}.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#fff;text-decoration:none;background-color:#222}.navbar .divider-vertical{width:1px;height:40px;margin:0 9px;overflow:hidden;background-color:#222;border-right:1px solid #333}.navbar .nav.pull-right{margin-right:0;margin-left:10px}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;background-color:#2c2c2c;*background-color:#222;background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-image:-moz-linear-gradient(top,#333,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{background-color:#222;*background-color:#151515}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#080808 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown .dropdown-toggle .caret,.navbar .nav li.dropdown.open .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.active .caret{opacity:1;filter:alpha(opacity=100)}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:transparent}.navbar .nav li.dropdown.active>.dropdown-toggle:hover{color:#fff}.navbar .pull-right .dropdown-menu,.navbar .dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right .dropdown-menu:before,.navbar .dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right .dropdown-menu:after,.navbar .dropdown-menu.pull-right:after{right:13px;left:auto}.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-ms-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:-o-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(top,#fff,#f5f5f5);background-repeat:repeat-x;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#f5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#999}.breadcrumb .active a{color:#333}.pagination{height:36px;margin:18px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a{background-color:#f5f5f5}.pagination .active a{color:#999;cursor:default}.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999;cursor:default;background-color:transparent}.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin-bottom:18px;margin-left:0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover{color:#999;cursor:default;background-color:#fff}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2070}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-ms-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1020;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-2px}.tooltip.right{margin-left:2px}.tooltip.bottom{margin-top:2px}.tooltip.left{margin-left:-2px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px}.popover.top{margin-top:-5px}.popover.right{margin-left:5px}.popover.bottom{margin-top:5px}.popover.left{margin-left:-5px}.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.popover .arrow{position:absolute;width:0;height:0}.popover-inner{width:280px;padding:3px;overflow:hidden;background:#000;background:rgba(0,0,0,0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3)}.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.popover-content{padding:14px;background-color:#fff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:18px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075);box-shadow:0 1px 1px rgba(0,0,0,0.075)}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px}.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:18px;margin-bottom:18px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{width:0;height:18px;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf',endColorstr='#0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35',GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#57a957',GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#339bb9',GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:18px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:18px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-ms-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:10px 15px 5px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{color:#fff}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden} diff --git a/euscanwww/htdocs/css/style.css b/euscanwww/htdocs/css/style.css deleted file mode 100644 index b87877e..0000000 --- a/euscanwww/htdocs/css/style.css +++ /dev/null @@ -1,244 +0,0 @@ -body { - font-size: 0.8em; - font-family: Dejavu, Verdana, "Bitstream Vera Sans", "Lucida Grande", "Trebuchet MS", sans-serif; - color: #535353; - background: #D2D0D4; -} - -img { - border: none; -} - -h1 { - margin-top: 0; - color: #333; - font-size: 1.6em; - width: 20em; - margin-left: auto; - margin-right: auto; -} - -a:link, a:visited { - text-decoration: none; - font-weight: bold; - color: #ff8c00; -} - -a:hover, a:active { - font-weight: bold; - color: #ff4500; - text-decoration: underline; -} - -#header { - width: 100%; - height: 30px; - margin: 0; - padding: 0; - background: url(../img/gentoo-header-bar-bg.png) repeat-x; - margin-bottom: 20px; -} - -#header #logo { - float: left; -} - -#content { - border: 1px solid #67539B; - background: #FEFEFE; - - padding: 20px; - - min-height: 350px; -} - -.menu { - border: 1px solid #67539B; - background: #8076A1; - color: #FFF; - padding-top: 5px; - padding-bottom: 5px; -} - -.notfirst-menu { - margin-top: 10px; -} - -.menu a { - color: #fff; -} - -.menu li { - list-style-type: none; -} - -.submenu { - padding-left: 15px; -} - -.menu dl { - margin-left: 15px; -} - -.menu dd { - border: none; -} - -a { - color: #3F4C66; -} - -a:link, a:visited, a:active { - color: #3F4C66; - text-decoration: none; -} -a:hover { - color: #4C5C7B; - text-decoration: underline; -} - -abbr:hover { - text-decoration: underline; -} - -pre { - border-left:5px solid; - padding:0.5em 1em; - margin-left:2em; -} - -dt { - font-weight: bold; -} - -dd { - border-left: 1px solid #ccc; - margin: 5px; - padding: 5px; -} - -.table { - width: 60% !important; - margin: auto; -} - -td { - max-width: 350px; -} - -#footer { - background: #8076A1; - font-size: 0.8em; - width: 100%; - margin: 0; - margin-top: 20px; - color: #FFF; -} - -#footer p { - text-align: right; - margin: 5px; -} - -.err, .ok, .inf { - margin: 5px; - margin-left: auto; - margin-right: auto; - width: 70%; - font-weight:bold; - border: 1px dotted #5682AD; -} - -.added { - color: #262; -} - -.removed { - color: #F00; -} - -.err { - border-color: #F00; - color: #F00; -} - -.ok { - border-color: #262; - color: #262; -} - -.logo { - float: right; -} - -.clear { - clear: both; -} - -.package_stat { - width: 40px; - float: right; - height: 5px; - border: 1px solid #ccc; -} - -.package_stat div { - float: left; - height: 5px; -} - -.package_stat .packaged { - background: #85ACFF; -} - -.package_stat .overlay { - background: #C6D9FD; -} - -.package_stat .upstream { - background: #FDEADD; -} - -.log { - max-height: 100pt; - overflow: auto; -} - -.hide { - display: none; -} - -.rounded { - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; -} - -.padded { - padding: 10px; -} - -.cursor-pointer { - cursor: pointer; -} - -textarea { - width: inherit; -} - -.errorlist > li { - color: red; - list-style: none; -} - -.errorlist + input { - border: 1px solid red; -} - -.inline { - display: inline; -} - -.padding-bottom10 { - padding-bottom: 10px; -} diff --git a/euscanwww/htdocs/css/table.css b/euscanwww/htdocs/css/table.css deleted file mode 100644 index d59a217..0000000 --- a/euscanwww/htdocs/css/table.css +++ /dev/null @@ -1,336 +0,0 @@ -/* - * File: demo_table.css - * CVS: $Id$ - * Description: CSS descriptions for DataTables demo pages - * Author: Allan Jardine - * Created: Tue May 12 06:47:22 BST 2009 - * Modified: $Date$ by $Author$ - * Language: CSS - * Project: DataTables - * - * Copyright 2009 Allan Jardine. All Rights Reserved. - * - * *************************************************************************** - * DESCRIPTION - * - * The styles given here are suitable for the demos that are used with the standard DataTables - * distribution (see www.datatables.net). You will most likely wish to modify these styles to - * meet the layout requirements of your site. - * - * Common issues: - * 'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is - * no conflict between the two pagination types. If you want to use full_numbers pagination - * ensure that you either have "example_alt_pagination" as a body class name, or better yet, - * modify that selector. - * Note that the path used for Images is relative. All images are by default located in - * ../img/ - relative to this CSS file. - */ - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables features - */ - -.dataTables_wrapper { - position: relative; - min-height: 302px; - clear: both; - _height: 302px; - zoom: 1; /* Feeling sorry for IE */ -} - -.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 250px; - height: 30px; - margin-left: -125px; - margin-top: -15px; - padding: 14px 0 2px 0; - border: 1px solid #ddd; - text-align: center; - color: #999; - font-size: 14px; - background-color: white; -} - -.dataTables_length { - width: 40%; - float: left; -} - -.dataTables_filter { - width: 50%; - float: right; - text-align: right; -} - -.dataTables_info { - width: 60%; - float: left; -} - -.dataTables_paginate { - width: 44px; - * width: 50px; - float: right; - text-align: right; -} - -/* Pagination nested */ -.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next { - height: 19px; - width: 19px; - margin-left: 3px; - float: left; -} - -.paginate_disabled_previous { - background-image: url('../img/back_disabled.jpg'); -} - -.paginate_enabled_previous { - background-image: url('../img/back_enabled.jpg'); -} - -.paginate_disabled_next { - background-image: url('../img/forward_disabled.jpg'); -} - -.paginate_enabled_next { - background-image: url('../img/forward_enabled.jpg'); -} - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables display - */ -table.display { - margin: 0 auto; - clear: both; - width: 100%; - - /* Note Firefox 3.5 and before have a bug with border-collapse - * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) - * border-spacing: 0; is one possible option. Conditional-css.com is - * useful for this kind of thing - * - * Further note IE 6/7 has problems when calculating widths with border width. - * It subtracts one px relative to the other browsers from the first column, and - * adds one to the end... - * - * If you want that effect I'd suggest setting a border-top/left on th/td's and - * then filling in the gaps with other borders. - */ -} - -table.display thead th { - padding: 3px 18px 3px 10px; - border-bottom: 1px solid black; - font-weight: bold; - cursor: pointer; - * cursor: hand; -} - -table.display tfoot th { - padding: 3px 18px 3px 10px; - border-top: 1px solid black; - font-weight: bold; -} - -table.display tr.heading2 td { - border-bottom: 1px solid #aaa; -} - -table.display td { - padding: 3px 10px; -} - -table.display td.center { - text-align: center; -} - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables sorting - */ - -.sorting_asc { - background: url('../img/sort_asc.png') no-repeat center right; -} - -.sorting_desc { - background: url('../img/sort_desc.png') no-repeat center right; -} - -.sorting { - background: url('../img/sort_both.png') no-repeat center right; -} - -.sorting_asc_disabled { - background: url('../img/sort_asc_disabled.png') no-repeat center right; -} - -.sorting_desc_disabled { - background: url('../img/sort_desc_disabled.png') no-repeat center right; -} - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * DataTables row classes - */ -table.display td.bad { - background-color: #FFDFDF; -} - -table.display td.ugly { - background-color: #EDB9B9; -} - -tr { - background-color: #E2E4FF; -} - -tr.even { - background-color: white; -} - - - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Misc - */ -.dataTables_scroll { - clear: both; -} - -.dataTables_scrollBody { - *margin-top: -1px; -} - -.top, .bottom { - padding: 15px; - background-color: #F5F5F5; - border: 1px solid #CCCCCC; -} - -.top .dataTables_info { - float: none; -} - -.clear { - clear: both; -} - -.dataTables_empty { - text-align: center; -} - -tfoot input { - margin: 0.5em 0; - width: 100%; - color: #444; -} - -tfoot input.search_init { - color: #999; -} - -td.group { - background-color: #d1cfd0; - border-bottom: 2px solid #A19B9E; - border-top: 2px solid #A19B9E; -} - -td.details { - background-color: #d1cfd0; - border: 2px solid #A19B9E; -} - - -.example_alt_pagination div.dataTables_info { - width: 40%; -} - -.paging_full_numbers { - width: 400px; - height: 22px; - line-height: 22px; -} - -.paging_full_numbers span.paginate_button, - .paging_full_numbers span.paginate_active { - border: 1px solid #aaa; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - padding: 2px 5px; - margin: 0 3px; - cursor: pointer; - *cursor: hand; -} - -.paging_full_numbers span.paginate_button { - background-color: #ddd; -} - -.paging_full_numbers span.paginate_button:hover { - background-color: #ccc; -} - -.paging_full_numbers span.paginate_active { - background-color: #99B3FF; -} - -table.display tr.row_selected td { - background-color: #9FAFD1; -} - -/* - * Row highlighting example - */ -tbody tr:hover, #example tbody tr td.highlighted { - background-color: #E6FF99; -} - -tr:hover { - background-color: #ECFFB3; -} - -tr:hover td.sorting_1 { - background-color: #DDFF75; -} - -tr:hover td.sorting_2 { - background-color: #E7FF9E; -} - -tr:hover td.sorting_3 { - background-color: #E2FF89; -} - - -/* - * KeyTable - */ -table.KeyTable td { - border: 3px solid transparent; -} - -table.KeyTable td.focus { - border: 3px solid #3366FF; -} - -div.box { - height: 100px; - padding: 10px; - overflow: auto; - border: 1px solid #8080FF; - background-color: #E5E5FF; -} diff --git a/euscanwww/htdocs/css/toggle_buttons.css b/euscanwww/htdocs/css/toggle_buttons.css deleted file mode 100644 index c884ba4..0000000 --- a/euscanwww/htdocs/css/toggle_buttons.css +++ /dev/null @@ -1,155 +0,0 @@ -/* line 11, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button { - display: inline-block; - cursor: pointer; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - border: 1px solid; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - position: relative; - text-align: left; - overflow: hidden; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -/* line 29, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button.deactivate { - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); - opacity: 0.5; - cursor: default !important; -} -/* line 32, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button.deactivate label, .toggle-button.deactivate span { - cursor: default !important; -} -/* line 36, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button > div { - display: inline-block; - width: 150px; - position: absolute; - top: 0; -} -/* line 41, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button > div.disabled { - left: -50%; -} -/* line 45, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button input[type=checkbox] { - display: none; -} -/* line 53, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span, .toggle-button label { - cursor: pointer; - position: relative; - float: left; - display: inline-block; -} -/* line 60, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button label { - background: #fefefe; - margin-left: -4px; - margin-right: -4px; - border: 1px solid #E6E6E6; - margin-top: -1px; - z-index: 100; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6)); - background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -o-linear-gradient(top, #fefefe, #e6e6e6); - background-image: linear-gradient(top, #fefefe, #e6e6e6); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - -o-border-radius: 4px; - border-radius: 4px; -} -/* line 72, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span { - color: #fefefe; - text-align: center; - font-weight: bold; - z-index: 1; -} -/* line 78, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.labelLeft { - -moz-border-radius-topleft: 4px; - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - padding-left: 3px; -} -/* line 83, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.labelRight { - -moz-border-radius-topright: 4px; - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -moz-border-radius-bottomright: 4px; - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - color: black; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6)); - background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6); - background-image: -o-linear-gradient(top, #fefefe, #e6e6e6); - background-image: linear-gradient(top, #fefefe, #e6e6e6); - padding-right: 3px; -} -/* line 91, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.primary, .toggle-button span.labelLeft { - color: #fefefe; - background: #0088cc; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0088cc), color-stop(100%, #0055cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); - background-image: -moz-linear-gradient(top, #0088cc, #0055cc); - background-image: -o-linear-gradient(top, #0088cc, #0055cc); - background-image: linear-gradient(top, #0088cc, #0055cc); -} -/* line 96, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.info { - color: #fefefe; - background: #5bc0de; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(top, #5bc0de, #2f96b4); -} -/* line 102, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.success { - color: #fefefe; - background: #62c462; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #62c462), color-stop(100%, #51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(top, #62c462, #51a351); -} -/* line 108, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.warning { - color: #fefefe; - background: #dbb450; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbb450), color-stop(100%, #f89406)); - background-image: -webkit-linear-gradient(top, #dbb450, #f89406); - background-image: -moz-linear-gradient(top, #dbb450, #f89406); - background-image: -o-linear-gradient(top, #dbb450, #f89406); - background-image: linear-gradient(top, #dbb450, #f89406); -} -/* line 114, ../sass/bootstrap-toggle-buttons.scss */ -.toggle-button span.danger { - color: #fefefe; - background: #ee5f5b; - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(top, #ee5f5b, #bd362f); -} diff --git a/euscanwww/htdocs/favicon.ico b/euscanwww/htdocs/favicon.ico deleted file mode 100644 index 4d4e9fb..0000000 Binary files a/euscanwww/htdocs/favicon.ico and /dev/null differ diff --git a/euscanwww/htdocs/img/back_disabled.jpg b/euscanwww/htdocs/img/back_disabled.jpg deleted file mode 100644 index 1e73a54..0000000 Binary files a/euscanwww/htdocs/img/back_disabled.jpg and /dev/null differ diff --git a/euscanwww/htdocs/img/back_enabled.jpg b/euscanwww/htdocs/img/back_enabled.jpg deleted file mode 100644 index a6d764c..0000000 Binary files a/euscanwww/htdocs/img/back_enabled.jpg and /dev/null differ diff --git a/euscanwww/htdocs/img/bug.png b/euscanwww/htdocs/img/bug.png deleted file mode 100644 index c33bfb9..0000000 Binary files a/euscanwww/htdocs/img/bug.png and /dev/null differ diff --git a/euscanwww/htdocs/img/django.png b/euscanwww/htdocs/img/django.png deleted file mode 100644 index e1bd216..0000000 Binary files a/euscanwww/htdocs/img/django.png and /dev/null differ diff --git a/euscanwww/htdocs/img/feed.png b/euscanwww/htdocs/img/feed.png deleted file mode 100644 index 207206f..0000000 Binary files a/euscanwww/htdocs/img/feed.png and /dev/null differ diff --git a/euscanwww/htdocs/img/forward_disabled.jpg b/euscanwww/htdocs/img/forward_disabled.jpg deleted file mode 100644 index 28a9dc5..0000000 Binary files a/euscanwww/htdocs/img/forward_disabled.jpg and /dev/null differ diff --git a/euscanwww/htdocs/img/forward_enabled.jpg b/euscanwww/htdocs/img/forward_enabled.jpg deleted file mode 100644 index 598c075..0000000 Binary files a/euscanwww/htdocs/img/forward_enabled.jpg and /dev/null differ diff --git a/euscanwww/htdocs/img/freshness-icon.png b/euscanwww/htdocs/img/freshness-icon.png deleted file mode 100644 index 6af3b72..0000000 Binary files a/euscanwww/htdocs/img/freshness-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/img/gentoo-header-bar-bg.png b/euscanwww/htdocs/img/gentoo-header-bar-bg.png deleted file mode 100644 index 9e7b3c2..0000000 Binary files a/euscanwww/htdocs/img/gentoo-header-bar-bg.png and /dev/null differ diff --git a/euscanwww/htdocs/img/gentoo-icon.png b/euscanwww/htdocs/img/gentoo-icon.png deleted file mode 100644 index 414e00c..0000000 Binary files a/euscanwww/htdocs/img/gentoo-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/img/gentoo.png b/euscanwww/htdocs/img/gentoo.png deleted file mode 100644 index d6533d7..0000000 Binary files a/euscanwww/htdocs/img/gentoo.png and /dev/null differ diff --git a/euscanwww/htdocs/img/gentoo_org.png b/euscanwww/htdocs/img/gentoo_org.png deleted file mode 100644 index a790fe9..0000000 Binary files a/euscanwww/htdocs/img/gentoo_org.png and /dev/null differ diff --git a/euscanwww/htdocs/img/linux.png b/euscanwww/htdocs/img/linux.png deleted file mode 100644 index 2a4f2e4..0000000 Binary files a/euscanwww/htdocs/img/linux.png and /dev/null differ diff --git a/euscanwww/htdocs/img/metadata.png b/euscanwww/htdocs/img/metadata.png deleted file mode 100644 index 363f51b..0000000 Binary files a/euscanwww/htdocs/img/metadata.png and /dev/null differ diff --git a/euscanwww/htdocs/img/overlay-icon.png b/euscanwww/htdocs/img/overlay-icon.png deleted file mode 100644 index 8347aa8..0000000 Binary files a/euscanwww/htdocs/img/overlay-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/img/python.png b/euscanwww/htdocs/img/python.png deleted file mode 100644 index 51c3385..0000000 Binary files a/euscanwww/htdocs/img/python.png and /dev/null differ diff --git a/euscanwww/htdocs/img/refresh-active.png b/euscanwww/htdocs/img/refresh-active.png deleted file mode 100644 index 6306868..0000000 Binary files a/euscanwww/htdocs/img/refresh-active.png and /dev/null differ diff --git a/euscanwww/htdocs/img/refresh-inactive.png b/euscanwww/htdocs/img/refresh-inactive.png deleted file mode 100644 index 7e8585f..0000000 Binary files a/euscanwww/htdocs/img/refresh-inactive.png and /dev/null differ diff --git a/euscanwww/htdocs/img/sort_asc.png b/euscanwww/htdocs/img/sort_asc.png deleted file mode 100644 index a56d0e2..0000000 Binary files a/euscanwww/htdocs/img/sort_asc.png and /dev/null differ diff --git a/euscanwww/htdocs/img/sort_asc_disabled.png b/euscanwww/htdocs/img/sort_asc_disabled.png deleted file mode 100644 index b7e621e..0000000 Binary files a/euscanwww/htdocs/img/sort_asc_disabled.png and /dev/null differ diff --git a/euscanwww/htdocs/img/sort_both.png b/euscanwww/htdocs/img/sort_both.png deleted file mode 100644 index 839ac4b..0000000 Binary files a/euscanwww/htdocs/img/sort_both.png and /dev/null differ diff --git a/euscanwww/htdocs/img/sort_desc.png b/euscanwww/htdocs/img/sort_desc.png deleted file mode 100644 index 90b2951..0000000 Binary files a/euscanwww/htdocs/img/sort_desc.png and /dev/null differ diff --git a/euscanwww/htdocs/img/sort_desc_disabled.png b/euscanwww/htdocs/img/sort_desc_disabled.png deleted file mode 100644 index 2409653..0000000 Binary files a/euscanwww/htdocs/img/sort_desc_disabled.png and /dev/null differ diff --git a/euscanwww/htdocs/img/unstable-icon.png b/euscanwww/htdocs/img/unstable-icon.png deleted file mode 100644 index f0323e5..0000000 Binary files a/euscanwww/htdocs/img/unstable-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/img/unwatch-icon.png b/euscanwww/htdocs/img/unwatch-icon.png deleted file mode 100644 index c4f0b59..0000000 Binary files a/euscanwww/htdocs/img/unwatch-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/img/upstream-icon.png b/euscanwww/htdocs/img/upstream-icon.png deleted file mode 100644 index 862134d..0000000 Binary files a/euscanwww/htdocs/img/upstream-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/img/watch-icon.png b/euscanwww/htdocs/img/watch-icon.png deleted file mode 100644 index 28ae542..0000000 Binary files a/euscanwww/htdocs/img/watch-icon.png and /dev/null differ diff --git a/euscanwww/htdocs/js/favourite.js b/euscanwww/htdocs/js/favourite.js deleted file mode 100644 index e8c80b6..0000000 --- a/euscanwww/htdocs/js/favourite.js +++ /dev/null @@ -1,23 +0,0 @@ -$(document).ready(function() { - $(".favourite-form").submit(function(e) { - e.preventDefault(); - e.stopPropagation(); - - $.post($(this).attr("action"), {packages: window.packages}, function() { - $(".unfavourite-button").removeClass("hide"); - $(".favourite-button").addClass("hide"); - }); - return false; - }); - - $(".unfavourite-form").submit(function(e) { - e.preventDefault(); - e.stopPropagation(); - - $.post($(this).attr("action"), {packages: window.packages}, function() { - $(".favourite-button").removeClass("hide"); - $(".unfavourite-button").addClass("hide"); - }); - return false; - }); -}); diff --git a/euscanwww/htdocs/js/jquery.dataTables.js b/euscanwww/htdocs/js/jquery.dataTables.js deleted file mode 100644 index 581222e..0000000 --- a/euscanwww/htdocs/js/jquery.dataTables.js +++ /dev/null @@ -1,6862 +0,0 @@ -/* - * File: jquery.dataTables.js - * Version: 1.7.6 - * Description: Paginate, search and sort HTML tables - * Author: Allan Jardine (www.sprymedia.co.uk) - * Created: 28/3/2008 - * Language: Javascript - * License: GPL v2 or BSD 3 point style - * Project: Mtaala - * Contact: allan.jardine@sprymedia.co.uk - * - * Copyright 2008-2010 Allan Jardine, all rights reserved. - * - * This source file is free software, under either the GPL v2 license or a - * BSD style license, as supplied with this software. - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -/* - * When considering jsLint, we need to allow eval() as it it is used for reading cookies and - * building the dynamic multi-column sort functions. - */ -/*jslint evil: true, undef: true, browser: true */ -/*globals $, jQuery,_fnExternApiFunc,_fnInitalise,_fnInitComplete,_fnLanguageProcess,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnGatherData,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxUpdateDraw,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnArrayCmp,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap*/ - -(function($, window, document) { - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Section - DataTables variables - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Variable: dataTableSettings - * Purpose: Store the settings for each dataTables instance - * Scope: jQuery.fn - */ - $.fn.dataTableSettings = []; - var _aoSettings = $.fn.dataTableSettings; /* Short reference for fast internal lookup */ - - /* - * Variable: dataTableExt - * Purpose: Container for customisable parts of DataTables - * Scope: jQuery.fn - */ - $.fn.dataTableExt = {}; - var _oExt = $.fn.dataTableExt; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Section - DataTables extensible objects - * - * The _oExt object is used to provide an area where user dfined plugins can be - * added to DataTables. The following properties of the object are used: - * oApi - Plug-in API functions - * aTypes - Auto-detection of types - * oSort - Sorting functions used by DataTables (based on the type) - * oPagination - Pagination functions for different input styles - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Variable: sVersion - * Purpose: Version string for plug-ins to check compatibility - * Scope: jQuery.fn.dataTableExt - * Notes: Allowed format is a.b.c.d.e where: - * a:int, b:int, c:int, d:string(dev|beta), e:int. d and e are optional - */ - _oExt.sVersion = "1.7.6"; - - /* - * Variable: sErrMode - * Purpose: How should DataTables report an error. Can take the value 'alert' or 'throw' - * Scope: jQuery.fn.dataTableExt - */ - _oExt.sErrMode = "alert"; - - /* - * Variable: iApiIndex - * Purpose: Index for what 'this' index API functions should use - * Scope: jQuery.fn.dataTableExt - */ - _oExt.iApiIndex = 0; - - /* - * Variable: oApi - * Purpose: Container for plugin API functions - * Scope: jQuery.fn.dataTableExt - */ - _oExt.oApi = { }; - - /* - * Variable: aFiltering - * Purpose: Container for plugin filtering functions - * Scope: jQuery.fn.dataTableExt - */ - _oExt.afnFiltering = [ ]; - - /* - * Variable: aoFeatures - * Purpose: Container for plugin function functions - * Scope: jQuery.fn.dataTableExt - * Notes: Array of objects with the following parameters: - * fnInit: Function for initialisation of Feature. Takes oSettings and returns node - * cFeature: Character that will be matched in sDom - case sensitive - * sFeature: Feature name - just for completeness :-) - */ - _oExt.aoFeatures = [ ]; - - /* - * Variable: ofnSearch - * Purpose: Container for custom filtering functions - * Scope: jQuery.fn.dataTableExt - * Notes: This is an object (the name should match the type) for custom filtering function, - * which can be used for live DOM checking or formatted text filtering - */ - _oExt.ofnSearch = { }; - - /* - * Variable: afnSortData - * Purpose: Container for custom sorting data source functions - * Scope: jQuery.fn.dataTableExt - * Notes: Array (associative) of functions which is run prior to a column of this - * 'SortDataType' being sorted upon. - * Function input parameters: - * object:oSettings- DataTables settings object - * int:iColumn - Target column number - * Return value: Array of data which exactly matched the full data set size for the column to - * be sorted upon - */ - _oExt.afnSortData = [ ]; - - /* - * Variable: oStdClasses - * Purpose: Storage for the various classes that DataTables uses - * Scope: jQuery.fn.dataTableExt - */ - _oExt.oStdClasses = { - /* Two buttons buttons */ - "sPagePrevEnabled": "paginate_enabled_previous", - "sPagePrevDisabled": "paginate_disabled_previous", - "sPageNextEnabled": "paginate_enabled_next", - "sPageNextDisabled": "paginate_disabled_next", - "sPageJUINext": "", - "sPageJUIPrev": "", - - /* Full numbers paging buttons */ - "sPageButton": "paginate_button", - "sPageButtonActive": "paginate_active", - "sPageButtonStaticDisabled": "paginate_button", - "sPageFirst": "first", - "sPagePrevious": "previous", - "sPageNext": "next", - "sPageLast": "last", - - /* Stripping classes */ - "sStripOdd": "odd", - "sStripEven": "even", - - /* Empty row */ - "sRowEmpty": "dataTables_empty", - - /* Features */ - "sWrapper": "dataTables_wrapper", - "sFilter": "dataTables_filter", - "sInfo": "dataTables_info", - "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ - "sLength": "dataTables_length", - "sProcessing": "dataTables_processing", - - /* Sorting */ - "sSortAsc": "sorting_asc", - "sSortDesc": "sorting_desc", - "sSortable": "sorting", /* Sortable in both directions */ - "sSortableAsc": "sorting_asc_disabled", - "sSortableDesc": "sorting_desc_disabled", - "sSortableNone": "sorting_disabled", - "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - "sSortJUIAsc": "", - "sSortJUIDesc": "", - "sSortJUI": "", - "sSortJUIAscAllowed": "", - "sSortJUIDescAllowed": "", - "sSortJUIWrapper": "", - - /* Scrolling */ - "sScrollWrapper": "dataTables_scroll", - "sScrollHead": "dataTables_scrollHead", - "sScrollHeadInner": "dataTables_scrollHeadInner", - "sScrollBody": "dataTables_scrollBody", - "sScrollFoot": "dataTables_scrollFoot", - "sScrollFootInner": "dataTables_scrollFootInner", - - /* Misc */ - "sFooterTH": "" - }; - - /* - * Variable: oJUIClasses - * Purpose: Storage for the various classes that DataTables uses - jQuery UI suitable - * Scope: jQuery.fn.dataTableExt - */ - _oExt.oJUIClasses = { - /* Two buttons buttons */ - "sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left", - "sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled", - "sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right", - "sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled", - "sPageJUINext": "ui-icon ui-icon-circle-arrow-e", - "sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w", - - /* Full numbers paging buttons */ - "sPageButton": "fg-button ui-button ui-state-default", - "sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled", - "sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled", - "sPageFirst": "first ui-corner-tl ui-corner-bl", - "sPagePrevious": "previous", - "sPageNext": "next", - "sPageLast": "last ui-corner-tr ui-corner-br", - - /* Stripping classes */ - "sStripOdd": "odd", - "sStripEven": "even", - - /* Empty row */ - "sRowEmpty": "dataTables_empty", - - /* Features */ - "sWrapper": "dataTables_wrapper", - "sFilter": "dataTables_filter", - "sInfo": "dataTables_info", - "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ - "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - "sLength": "dataTables_length", - "sProcessing": "dataTables_processing", - - /* Sorting */ - "sSortAsc": "ui-state-default", - "sSortDesc": "ui-state-default", - "sSortable": "ui-state-default", - "sSortableAsc": "ui-state-default", - "sSortableDesc": "ui-state-default", - "sSortableNone": "ui-state-default", - "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - "sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n", - "sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s", - "sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s", - "sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n", - "sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s", - "sSortJUIWrapper": "DataTables_sort_wrapper", - - /* Scrolling */ - "sScrollWrapper": "dataTables_scroll", - "sScrollHead": "dataTables_scrollHead ui-state-default", - "sScrollHeadInner": "dataTables_scrollHeadInner", - "sScrollBody": "dataTables_scrollBody", - "sScrollFoot": "dataTables_scrollFoot ui-state-default", - "sScrollFootInner": "dataTables_scrollFootInner", - - /* Misc */ - "sFooterTH": "ui-state-default" - }; - - /* - * Variable: oPagination - * Purpose: Container for the various type of pagination that dataTables supports - * Scope: jQuery.fn.dataTableExt - */ - _oExt.oPagination = { - /* - * Variable: two_button - * Purpose: Standard two button (forward/back) pagination - * Scope: jQuery.fn.dataTableExt.oPagination - */ - "two_button": { - /* - * Function: oPagination.two_button.fnInit - * Purpose: Initalise dom elements required for pagination with forward/back buttons only - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * node:nPaging - the DIV which contains this pagination control - * function:fnCallbackDraw - draw function which must be called on update - */ - "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) - { - var nPrevious, nNext, nPreviousInner, nNextInner; - - /* Store the next and previous elements in the oSettings object as they can be very - * usful for automation - particularly testing - */ - if ( !oSettings.bJUI ) - { - nPrevious = document.createElement( 'div' ); - nNext = document.createElement( 'div' ); - } - else - { - nPrevious = document.createElement( 'a' ); - nNext = document.createElement( 'a' ); - - nNextInner = document.createElement('span'); - nNextInner.className = oSettings.oClasses.sPageJUINext; - nNext.appendChild( nNextInner ); - - nPreviousInner = document.createElement('span'); - nPreviousInner.className = oSettings.oClasses.sPageJUIPrev; - nPrevious.appendChild( nPreviousInner ); - } - - nPrevious.className = oSettings.oClasses.sPagePrevDisabled; - nNext.className = oSettings.oClasses.sPageNextDisabled; - - nPrevious.title = oSettings.oLanguage.oPaginate.sPrevious; - nNext.title = oSettings.oLanguage.oPaginate.sNext; - - nPaging.appendChild( nPrevious ); - nPaging.appendChild( nNext ); - - $(nPrevious).bind( 'click.DT', function() { - if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) ) - { - /* Only draw when the page has actually changed */ - fnCallbackDraw( oSettings ); - } - } ); - - $(nNext).bind( 'click.DT', function() { - if ( oSettings.oApi._fnPageChange( oSettings, "next" ) ) - { - fnCallbackDraw( oSettings ); - } - } ); - - /* Take the brutal approach to cancelling text selection */ - $(nPrevious).bind( 'selectstart.DT', function () { return false; } ); - $(nNext).bind( 'selectstart.DT', function () { return false; } ); - - /* ID the first elements only */ - if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" ) - { - nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' ); - nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' ); - nNext.setAttribute( 'id', oSettings.sTableId+'_next' ); - } - }, - - /* - * Function: oPagination.two_button.fnUpdate - * Purpose: Update the two button pagination at the end of the draw - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * function:fnCallbackDraw - draw function to call on page change - */ - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - - /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - for ( var i=0, iLen=an.length ; i= (iPages - iPageCountHalf)) - { - iStartButton = iPages - iPageCount + 1; - iEndButton = iPages; - } - else - { - iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1; - iEndButton = iStartButton + iPageCount - 1; - } - } - } - - /* Build the dynamic list */ - for ( i=iStartButton ; i<=iEndButton ; i++ ) - { - if ( iCurrentPage != i ) - { - sList += ''+i+''; - } - else - { - sList += ''+i+''; - } - } - - /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - var anButtons, anStatic, nPaginateList; - var fnClick = function() { - /* Use the information in the element to jump to the required page */ - var iTarget = (this.innerHTML * 1) - 1; - oSettings._iDisplayStart = iTarget * oSettings._iDisplayLength; - fnCallbackDraw( oSettings ); - return false; - }; - var fnFalse = function () { return false; }; - - for ( i=0, iLen=an.length ; i y) ? 1 : 0)); - }, - - "string-desc": function ( a, b ) - { - var x = a.toLowerCase(); - var y = b.toLowerCase(); - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - }, - - - /* - * html sorting (ignore html tags) - */ - "html-asc": function ( a, b ) - { - var x = a.replace( /<.*?>/g, "" ).toLowerCase(); - var y = b.replace( /<.*?>/g, "" ).toLowerCase(); - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - }, - - "html-desc": function ( a, b ) - { - var x = a.replace( /<.*?>/g, "" ).toLowerCase(); - var y = b.replace( /<.*?>/g, "" ).toLowerCase(); - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - }, - - - /* - * date sorting - */ - "date-asc": function ( a, b ) - { - var x = Date.parse( a ); - var y = Date.parse( b ); - - if ( isNaN(x) || x==="" ) - { - x = Date.parse( "01/01/1970 00:00:00" ); - } - if ( isNaN(y) || y==="" ) - { - y = Date.parse( "01/01/1970 00:00:00" ); - } - - return x - y; - }, - - "date-desc": function ( a, b ) - { - var x = Date.parse( a ); - var y = Date.parse( b ); - - if ( isNaN(x) || x==="" ) - { - x = Date.parse( "01/01/1970 00:00:00" ); - } - if ( isNaN(y) || y==="" ) - { - y = Date.parse( "01/01/1970 00:00:00" ); - } - - return y - x; - }, - - - /* - * numerical sorting - */ - "numeric-asc": function ( a, b ) - { - var x = (a=="-" || a==="") ? 0 : a*1; - var y = (b=="-" || b==="") ? 0 : b*1; - return x - y; - }, - - "numeric-desc": function ( a, b ) - { - var x = (a=="-" || a==="") ? 0 : a*1; - var y = (b=="-" || b==="") ? 0 : b*1; - return y - x; - } - }; - - - /* - * Variable: aTypes - * Purpose: Container for the various type of type detection that dataTables supports - * Scope: jQuery.fn.dataTableExt - * Notes: The functions in this array are expected to parse a string to see if it is a data - * type that it recognises. If so then the function should return the name of the type (a - * corresponding sort function should be defined!), if the type is not recognised then the - * function should return null such that the parser and move on to check the next type. - * Note that ordering is important in this array - the functions are processed linearly, - * starting at index 0. - * Note that the input for these functions is always a string! It cannot be any other data - * type - */ - _oExt.aTypes = [ - /* - * Function: - - * Purpose: Check to see if a string is numeric - * Returns: string:'numeric' or null - * Inputs: string:sText - string to check - */ - function ( sData ) - { - /* Allow zero length strings as a number */ - if ( sData.length === 0 ) - { - return 'numeric'; - } - - var sValidFirstChars = "0123456789-"; - var sValidChars = "0123456789."; - var Char; - var bDecimal = false; - - /* Check for a valid first char (no period and allow negatives) */ - Char = sData.charAt(0); - if (sValidFirstChars.indexOf(Char) == -1) - { - return null; - } - - /* Check all the other characters are valid */ - for ( var i=1 ; i') != -1 ) - { - return 'html'; - } - return null; - } - ]; - - /* - * Function: fnVersionCheck - * Purpose: Check a version string against this version of DataTables. Useful for plug-ins - * Returns: bool:true -this version of DataTables is greater or equal to the required version - * false -this version of DataTales is not suitable - * Inputs: string:sVersion - the version to check against. May be in the following formats: - * "a", "a.b" or "a.b.c" - * Notes: This function will only check the first three parts of a version string. It is - * assumed that beta and dev versions will meet the requirements. This might change in future - */ - _oExt.fnVersionCheck = function( sVersion ) - { - /* This is cheap, but very effective */ - var fnZPad = function (Zpad, count) - { - while(Zpad.length < count) { - Zpad += '0'; - } - return Zpad; - }; - var aThis = _oExt.sVersion.split('.'); - var aThat = sVersion.split('.'); - var sThis = '', sThat = ''; - - for ( var i=0, iLen=aThat.length ; i= parseInt(sThat, 10); - }; - - /* - * Variable: _oExternConfig - * Purpose: Store information for DataTables to access globally about other instances - * Scope: jQuery.fn.dataTableExt - */ - _oExt._oExternConfig = { - /* int:iNextUnique - next unique number for an instance */ - "iNextUnique": 0 - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Section - DataTables prototype - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - /* - * Function: dataTable - * Purpose: DataTables information - * Returns: - - * Inputs: object:oInit - initalisation options for the table - */ - $.fn.dataTable = function( oInit ) - { - /* - * Function: classSettings - * Purpose: Settings container function for all 'class' properties which are required - * by dataTables - * Returns: - - * Inputs: - - */ - function classSettings () - { - this.fnRecordsTotal = function () - { - if ( this.oFeatures.bServerSide ) { - return parseInt(this._iRecordsTotal, 10); - } else { - return this.aiDisplayMaster.length; - } - }; - - this.fnRecordsDisplay = function () - { - if ( this.oFeatures.bServerSide ) { - return parseInt(this._iRecordsDisplay, 10); - } else { - return this.aiDisplay.length; - } - }; - - this.fnDisplayEnd = function () - { - if ( this.oFeatures.bServerSide ) { - if ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) { - return this._iDisplayStart+this.aiDisplay.length; - } else { - return Math.min( this._iDisplayStart+this._iDisplayLength, - this._iRecordsDisplay ); - } - } else { - return this._iDisplayEnd; - } - }; - - /* - * Variable: oInstance - * Purpose: The DataTables object for this table - * Scope: jQuery.dataTable.classSettings - */ - this.oInstance = null; - - /* - * Variable: sInstance - * Purpose: Unique idendifier for each instance of the DataTables object - * Scope: jQuery.dataTable.classSettings - */ - this.sInstance = null; - - /* - * Variable: oFeatures - * Purpose: Indicate the enablement of key dataTable features - * Scope: jQuery.dataTable.classSettings - */ - this.oFeatures = { - "bPaginate": true, - "bLengthChange": true, - "bFilter": true, - "bSort": true, - "bInfo": true, - "bAutoWidth": true, - "bProcessing": false, - "bSortClasses": true, - "bStateSave": false, - "bServerSide": false - }; - - /* - * Variable: oScroll - * Purpose: Container for scrolling options - * Scope: jQuery.dataTable.classSettings - */ - this.oScroll = { - "sX": "", - "sXInner": "", - "sY": "", - "bCollapse": false, - "bInfinite": false, - "iLoadGap": 100, - "iBarWidth": 0, - "bAutoCss": true - }; - - /* - * Variable: aanFeatures - * Purpose: Array referencing the nodes which are used for the features - * Scope: jQuery.dataTable.classSettings - * Notes: The parameters of this object match what is allowed by sDom - i.e. - * 'l' - Length changing - * 'f' - Filtering input - * 't' - The table! - * 'i' - Information - * 'p' - Pagination - * 'r' - pRocessing - */ - this.aanFeatures = []; - - /* - * Variable: oLanguage - * Purpose: Store the language strings used by dataTables - * Scope: jQuery.dataTable.classSettings - * Notes: The words in the format _VAR_ are variables which are dynamically replaced - * by javascript - */ - this.oLanguage = { - "sProcessing": "Processing...", - "sLengthMenu": "Show _MENU_ entries", - "sZeroRecords": "No matching records found", - "sEmptyTable": "No data available in table", - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - "sInfoFiltered": "(filtered from _MAX_ total entries)", - "sInfoPostFix": "", - "sSearch": "Search:", - "sUrl": "", - "oPaginate": { - "sFirst": "First", - "sPrevious": "Previous", - "sNext": "Next", - "sLast": "Last" - }, - "fnInfoCallback": null - }; - - /* - * Variable: aoData - * Purpose: Store data information - * Scope: jQuery.dataTable.classSettings - * Notes: This is an array of objects with the following parameters: - * int: _iId - internal id for tracking - * array: _aData - internal data - used for sorting / filtering etc - * node: nTr - display node - * array node: _anHidden - hidden TD nodes - * string: _sRowStripe - */ - this.aoData = []; - - /* - * Variable: aiDisplay - * Purpose: Array of indexes which are in the current display (after filtering etc) - * Scope: jQuery.dataTable.classSettings - */ - this.aiDisplay = []; - - /* - * Variable: aiDisplayMaster - * Purpose: Array of indexes for display - no filtering - * Scope: jQuery.dataTable.classSettings - */ - this.aiDisplayMaster = []; - - /* - * Variable: aoColumns - * Purpose: Store information about each column that is in use - * Scope: jQuery.dataTable.classSettings - */ - this.aoColumns = []; - - /* - * Variable: iNextId - * Purpose: Store the next unique id to be used for a new row - * Scope: jQuery.dataTable.classSettings - */ - this.iNextId = 0; - - /* - * Variable: asDataSearch - * Purpose: Search data array for regular expression searching - * Scope: jQuery.dataTable.classSettings - */ - this.asDataSearch = []; - - /* - * Variable: oPreviousSearch - * Purpose: Store the previous search incase we want to force a re-search - * or compare the old search to a new one - * Scope: jQuery.dataTable.classSettings - */ - this.oPreviousSearch = { - "sSearch": "", - "bRegex": false, - "bSmart": true - }; - - /* - * Variable: aoPreSearchCols - * Purpose: Store the previous search for each column - * Scope: jQuery.dataTable.classSettings - */ - this.aoPreSearchCols = []; - - /* - * Variable: aaSorting - * Purpose: Sorting information - * Scope: jQuery.dataTable.classSettings - * Notes: Index 0 - column number - * Index 1 - current sorting direction - * Index 2 - index of asSorting for this column - */ - this.aaSorting = [ [0, 'asc', 0] ]; - - /* - * Variable: aaSortingFixed - * Purpose: Sorting information that is always applied - * Scope: jQuery.dataTable.classSettings - */ - this.aaSortingFixed = null; - - /* - * Variable: asStripClasses - * Purpose: Classes to use for the striping of a table - * Scope: jQuery.dataTable.classSettings - */ - this.asStripClasses = []; - - /* - * Variable: asDestoryStrips - * Purpose: If restoring a table - we should restore it's striping classes as well - * Scope: jQuery.dataTable.classSettings - */ - this.asDestoryStrips = []; - - /* - * Variable: sDestroyWidth - * Purpose: If restoring a table - we should restore it's width - * Scope: jQuery.dataTable.classSettings - */ - this.sDestroyWidth = 0; - - /* - * Variable: fnRowCallback - * Purpose: Call this function every time a row is inserted (draw) - * Scope: jQuery.dataTable.classSettings - */ - this.fnRowCallback = null; - - /* - * Variable: fnHeaderCallback - * Purpose: Callback function for the header on each draw - * Scope: jQuery.dataTable.classSettings - */ - this.fnHeaderCallback = null; - - /* - * Variable: fnFooterCallback - * Purpose: Callback function for the footer on each draw - * Scope: jQuery.dataTable.classSettings - */ - this.fnFooterCallback = null; - - /* - * Variable: aoDrawCallback - * Purpose: Array of callback functions for draw callback functions - * Scope: jQuery.dataTable.classSettings - * Notes: Each array element is an object with the following parameters: - * function:fn - function to call - * string:sName - name callback (feature). useful for arranging array - */ - this.aoDrawCallback = []; - - /* - * Variable: fnInitComplete - * Purpose: Callback function for when the table has been initalised - * Scope: jQuery.dataTable.classSettings - */ - this.fnInitComplete = null; - - /* - * Variable: sTableId - * Purpose: Cache the table ID for quick access - * Scope: jQuery.dataTable.classSettings - */ - this.sTableId = ""; - - /* - * Variable: nTable - * Purpose: Cache the table node for quick access - * Scope: jQuery.dataTable.classSettings - */ - this.nTable = null; - - /* - * Variable: nTHead - * Purpose: Permanent ref to the thead element - * Scope: jQuery.dataTable.classSettings - */ - this.nTHead = null; - - /* - * Variable: nTFoot - * Purpose: Permanent ref to the tfoot element - if it exists - * Scope: jQuery.dataTable.classSettings - */ - this.nTFoot = null; - - /* - * Variable: nTBody - * Purpose: Permanent ref to the tbody element - * Scope: jQuery.dataTable.classSettings - */ - this.nTBody = null; - - /* - * Variable: nTableWrapper - * Purpose: Cache the wrapper node (contains all DataTables controlled elements) - * Scope: jQuery.dataTable.classSettings - */ - this.nTableWrapper = null; - - /* - * Variable: bInitialised - * Purpose: Indicate if all required information has been read in - * Scope: jQuery.dataTable.classSettings - */ - this.bInitialised = false; - - /* - * Variable: aoOpenRows - * Purpose: Information about open rows - * Scope: jQuery.dataTable.classSettings - * Notes: Has the parameters 'nTr' and 'nParent' - */ - this.aoOpenRows = []; - - /* - * Variable: sDom - * Purpose: Dictate the positioning that the created elements will take - * Scope: jQuery.dataTable.classSettings - * Notes: - * The following options are allowed: - * 'l' - Length changing - * 'f' - Filtering input - * 't' - The table! - * 'i' - Information - * 'p' - Pagination - * 'r' - pRocessing - * The following constants are allowed: - * 'H' - jQueryUI theme "header" classes - * 'F' - jQueryUI theme "footer" classes - * The following syntax is expected: - * '<' and '>' - div elements - * '<"class" and '>' - div with a class - * Examples: - * '<"wrapper"flipt>', 'ip>' - */ - this.sDom = 'lfrtip'; - - /* - * Variable: sPaginationType - * Purpose: Note which type of sorting should be used - * Scope: jQuery.dataTable.classSettings - */ - this.sPaginationType = "two_button"; - - /* - * Variable: iCookieDuration - * Purpose: The cookie duration (for bStateSave) in seconds - default 2 hours - * Scope: jQuery.dataTable.classSettings - */ - this.iCookieDuration = 60 * 60 * 2; - - /* - * Variable: sCookiePrefix - * Purpose: The cookie name prefix - * Scope: jQuery.dataTable.classSettings - */ - this.sCookiePrefix = "SpryMedia_DataTables_"; - - /* - * Variable: fnCookieCallback - * Purpose: Callback function for cookie creation - * Scope: jQuery.dataTable.classSettings - */ - this.fnCookieCallback = null; - - /* - * Variable: aoStateSave - * Purpose: Array of callback functions for state saving - * Scope: jQuery.dataTable.classSettings - * Notes: Each array element is an object with the following parameters: - * function:fn - function to call. Takes two parameters, oSettings and the JSON string to - * save that has been thus far created. Returns a JSON string to be inserted into a - * json object (i.e. '"param": [ 0, 1, 2]') - * string:sName - name of callback - */ - this.aoStateSave = []; - - /* - * Variable: aoStateLoad - * Purpose: Array of callback functions for state loading - * Scope: jQuery.dataTable.classSettings - * Notes: Each array element is an object with the following parameters: - * function:fn - function to call. Takes two parameters, oSettings and the object stored. - * May return false to cancel state loading. - * string:sName - name of callback - */ - this.aoStateLoad = []; - - /* - * Variable: oLoadedState - * Purpose: State that was loaded from the cookie. Useful for back reference - * Scope: jQuery.dataTable.classSettings - */ - this.oLoadedState = null; - - /* - * Variable: sAjaxSource - * Purpose: Source url for AJAX data for the table - * Scope: jQuery.dataTable.classSettings - */ - this.sAjaxSource = null; - - /* - * Variable: bAjaxDataGet - * Purpose: Note if draw should be blocked while getting data - * Scope: jQuery.dataTable.classSettings - */ - this.bAjaxDataGet = true; - - /* - * Variable: fnServerData - * Purpose: Function to get the server-side data - can be overruled by the developer - * Scope: jQuery.dataTable.classSettings - */ - this.fnServerData = function ( url, data, callback ) { - $.ajax( { - "url": url, - "data": data, - "success": callback, - "dataType": "json", - "cache": false, - "error": function (xhr, error, thrown) { - if ( error == "parsererror" ) { - alert( "DataTables warning: JSON data from server could not be parsed. "+ - "This is caused by a JSON formatting error." ); - } - } - } ); - }; - - /* - * Variable: fnFormatNumber - * Purpose: Format numbers for display - * Scope: jQuery.dataTable.classSettings - */ - this.fnFormatNumber = function ( iIn ) - { - if ( iIn < 1000 ) - { - /* A small optimisation for what is likely to be the vast majority of use cases */ - return iIn; - } - else - { - var s=(iIn+""), a=s.split(""), out="", iLen=s.length; - - for ( var i=0 ; i